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