nestjs-auditlog
Version:
A powerful package for auditlog using opentelemetry in NestJS applications
56 lines • 4.34 kB
JavaScript
;
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