chore(backend): Duidelijkere MikroORM logging
Zorgt voor beter formaat en juiste labels
This commit is contained in:
parent
e6c03c1aca
commit
eca8d89712
5 changed files with 38 additions and 13 deletions
|
@ -1 +1,11 @@
|
|||
PORT=3000
|
||||
#
|
||||
# Basic configuration
|
||||
#
|
||||
|
||||
PORT=3000 # The port the backend will listen on
|
||||
|
||||
#
|
||||
# Advanced configuration
|
||||
#
|
||||
|
||||
# LOKI_HOST=http://localhost:3102 # The address of the Loki instance, used for logging
|
||||
|
|
6
backend/src/config.ts
Normal file
6
backend/src/config.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
// Logging
|
||||
|
||||
export const LOG_LEVEL: string =
|
||||
'development' === process.env.NODE_ENV ? 'debug' : 'info';
|
||||
export const LOKI_HOST: string =
|
||||
process.env.LOKI_HOST || 'http://localhost:3102';
|
|
@ -1,43 +1,45 @@
|
|||
import { createLogger, format, Logger, transports } from 'winston';
|
||||
import LokiTransport from 'winston-loki';
|
||||
import { LokiLabels } from 'loki-logger-ts';
|
||||
import { LOG_LEVEL, LOKI_HOST } from '../config.js';
|
||||
|
||||
const LoggingLevel = 'development' === process.env.NODE_ENV ? 'debug' : 'info';
|
||||
const Host = 'http://localhost:3102';
|
||||
const Labels: LokiLabels = {
|
||||
source: 'Dwengo-Backend',
|
||||
job: 'Dwengo-Backend',
|
||||
service: 'API',
|
||||
host: 'localhost',
|
||||
};
|
||||
|
||||
let logger: Logger;
|
||||
|
||||
function initializeLogger() {
|
||||
function initializeLogger(): Logger {
|
||||
if (logger !== undefined) {
|
||||
return logger;
|
||||
}
|
||||
|
||||
const lokiTransport: LokiTransport = new LokiTransport({
|
||||
host: Host,
|
||||
host: LOKI_HOST,
|
||||
labels: Labels,
|
||||
level: LoggingLevel,
|
||||
level: LOG_LEVEL,
|
||||
json: true,
|
||||
format: format.combine(format.timestamp(), format.json()),
|
||||
onConnectionError: (err) => {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error(`Connection error: ${err}`);
|
||||
},
|
||||
});
|
||||
|
||||
const consoleTransport = new transports.Console({
|
||||
level: LoggingLevel,
|
||||
format: format.combine(format.simple(), format.colorize()),
|
||||
level: LOG_LEVEL,
|
||||
format: format.combine(format.cli(), format.colorize()),
|
||||
});
|
||||
|
||||
logger = createLogger({
|
||||
transports: [lokiTransport, consoleTransport],
|
||||
});
|
||||
|
||||
logger.debug('Logger initialized');
|
||||
logger.debug(
|
||||
`Logger initialized with level ${LOG_LEVEL}, Loki host ${LOKI_HOST}`
|
||||
);
|
||||
return logger;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,6 @@ export function responseTimeLogger(req: Request, res: Response, time: number) {
|
|||
status: status,
|
||||
responseTime: Number(time),
|
||||
labels: {
|
||||
origin: 'api',
|
||||
type: 'responseTime',
|
||||
},
|
||||
});
|
||||
|
|
|
@ -1,12 +1,20 @@
|
|||
import { Options } from '@mikro-orm/core';
|
||||
import { LoggerOptions, Options } from '@mikro-orm/core';
|
||||
import { PostgreSqlDriver } from '@mikro-orm/postgresql';
|
||||
import { MikroOrmLogger } from './logging/mikroOrmLogger.js';
|
||||
import { LOG_LEVEL } from './config.js';
|
||||
|
||||
const config: Options = {
|
||||
driver: PostgreSqlDriver,
|
||||
dbName: 'dwengo',
|
||||
password: 'postgres',
|
||||
entities: ['dist/**/*.entity.js'],
|
||||
entitiesTs: ['src/**/*.entity.ts'],
|
||||
debug: true,
|
||||
|
||||
// Logging
|
||||
debug: LOG_LEVEL === 'debug',
|
||||
loggerFactory: (options: LoggerOptions) => {
|
||||
return new MikroOrmLogger(options);
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue