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