pandora
Version:
A powerful and lightweight application manager for Node.js applications powered by TypeScript.
86 lines (68 loc) • 2.12 kB
text/typescript
;
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;
}
}