chore(backend): Definieer logger voor MikroORM
Maak gebruik van juiste logging niveau voor elke taak (namespace)
This commit is contained in:
parent
9a96e480cd
commit
e6c03c1aca
1 changed files with 88 additions and 0 deletions
88
backend/src/logging/mikroOrmLogger.ts
Normal file
88
backend/src/logging/mikroOrmLogger.ts
Normal 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,
|
||||
};
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue