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