chore(backend): Definieer logger voor MikroORM

Maak gebruik van juiste logging niveau voor elke taak (namespace)
This commit is contained in:
Tibo De Peuter 2025-03-02 13:58:08 +01:00
parent 9a96e480cd
commit e6c03c1aca
Signed by: tdpeuter
GPG key ID: 38297DE43F75FFE2

View file

@ -0,0 +1,88 @@
import { DefaultLogger, LogContext, LoggerNamespace } from '@mikro-orm/core';
import { Logger } from 'winston';
import { getLogger } from './initalize';
import { LokiLabels } from 'loki-logger-ts';
export class MikroOrmLogger extends DefaultLogger {
private logger: Logger = getLogger();
log(namespace: LoggerNamespace, message: string, context?: LogContext) {
if (!this.isEnabled(namespace, context)) {
return;
}
switch (namespace) {
case 'query':
this.logger.debug(
this.createMessage(namespace, message, context)
);
break;
case 'query-params':
// TODO Which log level should this be?
this.logger.info(
this.createMessage(namespace, message, context)
);
break;
case 'schema':
this.logger.info(
this.createMessage(namespace, message, context)
);
break;
case 'discovery':
this.logger.debug(
this.createMessage(namespace, message, context)
);
break;
case 'info':
this.logger.info(
this.createMessage(namespace, message, context)
);
break;
case 'deprecated':
this.logger.warn(
this.createMessage(namespace, message, context)
);
break;
default:
switch (context?.level) {
case 'info':
this.logger.info(
this.createMessage(namespace, message, context)
);
break;
case 'warning':
this.logger.warn(message);
break;
case 'error':
this.logger.error(message);
break;
default:
this.logger.debug(message);
break;
}
}
}
private createMessage(
namespace: LoggerNamespace,
messageArg: string,
context?: LogContext
) {
const labels: LokiLabels = {
service: 'ORM',
};
let message: string;
if (context?.label) {
message = `[${namespace}] (${context?.label}) ${messageArg}`;
} else {
message = `[${namespace}] ${messageArg}`;
}
return {
message: message,
labels: labels,
context: context,
};
}
}