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; | ||||||
|  |  | ||||||
		Reference in a new issue