UNPKG

nestjs-auditlog

Version:

A powerful package for auditlog using opentelemetry in NestJS applications

56 lines 4.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AuditLogExporter = void 0; const api_logs_1 = require("@opentelemetry/api-logs"); const resources_1 = require("@opentelemetry/resources"); const sdk_logs_1 = require("@opentelemetry/sdk-logs"); const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); /** * The abstract class of audit log exporter */ class AuditLogExporter { constructor(options) { this.options = options; if (!options.exporter) return; const resource = new resources_1.Resource({ [semantic_conventions_1.SEMRESATTRS_SERVICE_NAME]: options.serviceName, [semantic_conventions_1.SEMRESATTRS_SERVICE_NAMESPACE]: options.serviceNamespace, [semantic_conventions_1.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT]: options.serviceEnvironmentName, }); this.loggerProvider = new sdk_logs_1.LoggerProvider({ resource, }); this.loggerProvider.addLogRecordProcessor(new sdk_logs_1.SimpleLogRecordProcessor(options.exporter)); this.loggerOtel = this.loggerProvider.getLogger('default'); } clone() { return new AuditLogExporter(this.options); } async startup() { } async shutdown() { await this.loggerProvider.shutdown(); } async sendAuditLog(log) { this.loggerOtel.emit({ severityNumber: api_logs_1.SeverityNumber.INFO, severityText: 'INFO', body: this.customLoggerBodyTransformation(log), attributes: log, }); } /** * the transformation function to convert audit log object to readable log body string * * @param log audit log * @returns log body */ customLoggerBodyTransformation(log) { const resourceId = Array.isArray(log.resource.id) ? log.resource.id.join(',') : log.resource.id; return `The actor ${log.actor.type} ${log.actor.id} did the operator ${log.operation.type} ${log.operation.id} on the resource ${log.resource.type} ${resourceId}`; } } exports.AuditLogExporter = AuditLogExporter; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXRsb2cuZXhwb3J0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvYXVkaXQtbG9nL2V4cG9ydGVycy9hdWRpdGxvZy5leHBvcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBaUU7QUFDakUsd0RBQW9EO0FBQ3BELHNEQUdpQztBQUNqQyw4RUFJNkM7QUFRN0M7O0dBRUc7QUFDSCxNQUFhLGdCQUFnQjtJQUszQixZQUFZLE9BQWlDO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxvQkFBUSxDQUFDO1lBQzVCLENBQUMsK0NBQXdCLENBQUMsRUFBRSxPQUFPLENBQUMsV0FBVztZQUMvQyxDQUFDLG9EQUE2QixDQUFDLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtZQUN6RCxDQUFDLHlEQUFrQyxDQUFDLEVBQUUsT0FBTyxDQUFDLHNCQUFzQjtTQUNyRSxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUkseUJBQWMsQ0FBQztZQUN2QyxRQUFRO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FDdkMsSUFBSSxtQ0FBd0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQy9DLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sS0FBSSxDQUFDO0lBRWxCLEtBQUssQ0FBQyxRQUFRO1FBQ1osTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQWM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDbkIsY0FBYyxFQUFFLHlCQUFjLENBQUMsSUFBSTtZQUNuQyxZQUFZLEVBQUUsTUFBTTtZQUNwQixJQUFJLEVBQUUsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQztZQUM5QyxVQUFVLEVBQUUsR0FBVTtTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCw4QkFBOEIsQ0FBQyxHQUFjO1FBQzNDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDL0MsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDM0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBRXBCLE9BQU8sYUFBYSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUscUJBQXFCLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxvQkFBb0IsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7SUFDckssQ0FBQztDQUNGO0FBM0RELDRDQTJEQyJ9