chore(backend): Loki configureren

De meeste console statements vervangen door Loki
This commit is contained in:
Tibo De Peuter 2025-02-23 17:29:11 +01:00
parent 0f8bd3df6a
commit 7fd6305fd9
Signed by: tdpeuter
GPG key ID: 38297DE43F75FFE2
8 changed files with 767 additions and 40 deletions

View file

@ -0,0 +1,47 @@
import { createLogger, format, Logger, transports } from 'winston';
import LokiTransport from 'winston-loki';
import { LokiLabels } from 'loki-logger-ts';
const LoggingLevel = 'development' === process.env.NODE_ENV ? 'debug' : 'info';
const Host = 'http://localhost:3102';
const Labels: LokiLabels = {
source: 'Dwengo-Backend',
job: 'Dwengo-Backend',
host: 'localhost',
};
let logger: Logger;
function initializeLogger() {
if (logger !== undefined) {
return logger;
}
const lokiTransport: LokiTransport = new LokiTransport({
host: Host,
labels: Labels,
level: LoggingLevel,
json: true,
format: format.combine(format.timestamp(), format.json()),
onConnectionError: (err) => {
console.error(`Connection error: ${err}`);
},
});
const consoleTransport = new transports.Console({
level: LoggingLevel,
format: format.combine(format.simple(), format.colorize()),
});
logger = createLogger({
transports: [lokiTransport, consoleTransport],
});
logger.debug('Logger initialized');
return logger;
}
export function getLogger(): Logger {
logger ||= initializeLogger();
return logger;
}