UNPKG

pandora

Version:

A powerful and lightweight application manager for Node.js applications powered by TypeScript.

86 lines (68 loc) 2.12 kB
'use strict'; import {ILogger, DefaultLoggerManager} from 'pandora-service-logger'; import {GlobalConfigProcessor} from '../universal/GlobalConfigProcessor'; import {getAppLogDir} from '../universal/LoggerBroker'; /** * Class ServiceLogger */ export default class ServiceLogger implements ILogger { protected prefix: string; protected logger: ILogger; constructor(serviceCore) { this.prefix = `[appName: ${serviceCore.context.appName}, processName: ${serviceCore.context.processName}, workMode: ${serviceCore.workMode}] `; this.setupLogger(serviceCore); } static commonServiceLogger: ILogger; setupLogger (serviceCore) { const serviceId: string = serviceCore.getServiceId(); const globalConfig = GlobalConfigProcessor.getInstance().getAllProperties(); const defaultLoggerManager = DefaultLoggerManager.getInstance(); if(!globalConfig.logger.isolatedServiceLogger && !ServiceLogger.commonServiceLogger) { ServiceLogger.commonServiceLogger = defaultLoggerManager.createLogger('service', { stdoutLevel: 'NONE', level: 'INFO', type: 'date', dir: getAppLogDir(serviceCore.context.appName) }); } if(ServiceLogger.commonServiceLogger) { this.logger = ServiceLogger.commonServiceLogger; return; } this.logger = defaultLoggerManager.createLogger(serviceId, { stdoutLevel: 'NONE', level: 'INFO', type: 'date', dir: getAppLogDir(serviceCore.context.appName) }); } debug(...args) { args = this.doPrefix(args); this.logger.debug(...args); } warn(...args) { args = this.doPrefix(args); this.logger.warn(...args); } info(...args) { args = this.doPrefix(args); this.logger.info(...args); } error(...args) { args = this.doPrefix(args); this.logger.error(...args); } log(...args) { args = this.doPrefix(args); this.logger.info(...args); } write(...args) { this.logger.write(...args); } doPrefix(args) { if (typeof args[0] === 'string') { args[0] = this.prefix + args[0]; } return args; } }