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 { createLogger, format, Logger, transports } from 'winston';
|
||||||
import LokiTransport from 'winston-loki';
|
import LokiTransport from 'winston-loki';
|
||||||
import { LokiLabels } from 'loki-logger-ts';
|
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 = {
|
const Labels: LokiLabels = {
|
||||||
source: 'Dwengo-Backend',
|
source: 'Dwengo-Backend',
|
||||||
job: 'Dwengo-Backend',
|
service: 'API',
|
||||||
host: 'localhost',
|
host: 'localhost',
|
||||||
};
|
};
|
||||||
|
|
||||||
let logger: Logger;
|
let logger: Logger;
|
||||||
|
|
||||||
function initializeLogger() {
|
function initializeLogger(): Logger {
|
||||||
if (logger !== undefined) {
|
if (logger !== undefined) {
|
||||||
return logger;
|
return logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
const lokiTransport: LokiTransport = new LokiTransport({
|
const lokiTransport: LokiTransport = new LokiTransport({
|
||||||
host: Host,
|
host: LOKI_HOST,
|
||||||
labels: Labels,
|
labels: Labels,
|
||||||
level: LoggingLevel,
|
level: LOG_LEVEL,
|
||||||
json: true,
|
json: true,
|
||||||
format: format.combine(format.timestamp(), format.json()),
|
format: format.combine(format.timestamp(), format.json()),
|
||||||
onConnectionError: (err) => {
|
onConnectionError: (err) => {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
console.error(`Connection error: ${err}`);
|
console.error(`Connection error: ${err}`);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const consoleTransport = new transports.Console({
|
const consoleTransport = new transports.Console({
|
||||||
level: LoggingLevel,
|
level: LOG_LEVEL,
|
||||||
format: format.combine(format.simple(), format.colorize()),
|
format: format.combine(format.cli(), format.colorize()),
|
||||||
});
|
});
|
||||||
|
|
||||||
logger = createLogger({
|
logger = createLogger({
|
||||||
transports: [lokiTransport, consoleTransport],
|
transports: [lokiTransport, consoleTransport],
|
||||||
});
|
});
|
||||||
|
|
||||||
logger.debug('Logger initialized');
|
logger.debug(
|
||||||
|
`Logger initialized with level ${LOG_LEVEL}, Loki host ${LOKI_HOST}`
|
||||||
|
);
|
||||||
return logger;
|
return logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@ export function responseTimeLogger(req: Request, res: Response, time: number) {
|
||||||
status: status,
|
status: status,
|
||||||
responseTime: Number(time),
|
responseTime: Number(time),
|
||||||
labels: {
|
labels: {
|
||||||
origin: 'api',
|
|
||||||
type: 'responseTime',
|
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 { PostgreSqlDriver } from '@mikro-orm/postgresql';
|
||||||
|
import { MikroOrmLogger } from './logging/mikroOrmLogger.js';
|
||||||
|
import { LOG_LEVEL } from './config.js';
|
||||||
|
|
||||||
const config: Options = {
|
const config: Options = {
|
||||||
driver: PostgreSqlDriver,
|
driver: PostgreSqlDriver,
|
||||||
dbName: 'dwengo',
|
dbName: 'dwengo',
|
||||||
|
password: 'postgres',
|
||||||
entities: ['dist/**/*.entity.js'],
|
entities: ['dist/**/*.entity.js'],
|
||||||
entitiesTs: ['src/**/*.entity.ts'],
|
entitiesTs: ['src/**/*.entity.ts'],
|
||||||
debug: true,
|
|
||||||
|
// Logging
|
||||||
|
debug: LOG_LEVEL === 'debug',
|
||||||
|
loggerFactory: (options: LoggerOptions) => {
|
||||||
|
return new MikroOrmLogger(options);
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default config;
|
export default config;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue