pandora
Version:
A powerful and lightweight application manager for Node.js applications powered by TypeScript.
88 lines (73 loc) • 2.48 kB
text/typescript
;
import {DefaultLoggerManager, ILogger} from 'pandora-service-logger';
import {join} from 'path';
import {EOL} from 'os';
import mzFs = require('mz/fs');
const ConsoleLogger = require('egg-logger').EggConsoleLogger;
export const consoleLogger = new ConsoleLogger({
level: 'INFO',
});
let daemonLogger = null;
export function getPandoraLogsDir() {
const {logger: loggerConfig} = lazyGetGlobalConfig();
return loggerConfig.logsDir;
}
export function getDaemonLogger(): ILogger {
const {logger: loggerConfig} = lazyGetGlobalConfig();
if (!daemonLogger) {
const loggerManager = DefaultLoggerManager.getInstance();
daemonLogger = loggerManager.createLogger('daemon', {
...loggerConfig.daemonLogger,
dir: join(loggerConfig.logsDir, 'pandorajs')
});
}
return daemonLogger;
}
export function getDaemonStdoutLogPath() {
const {logger: loggerConfig} = lazyGetGlobalConfig();
return join(loggerConfig.logsDir, 'pandorajs/daemon_std.log');
}
export function getDaemonLogPath() {
const {logger: loggerConfig} = lazyGetGlobalConfig();
return join(loggerConfig.logsDir, 'pandorajs/daemon.log');
}
export function createAppLogger(appName, logName) {
const {logger: loggerConfig} = lazyGetGlobalConfig();
const loggerManager = DefaultLoggerManager.getInstance();
return loggerManager.createLogger(logName, {
...loggerConfig.appLogger,
dir: join(loggerConfig.logsDir, appName)
});
}
export function getAppLogDir(appName) {
const {logger: loggerConfig} = lazyGetGlobalConfig();
return join(loggerConfig.logsDir, appName);
}
export function getAppLogPath(appName, logName) {
return join(getAppLogDir(appName), logName + '.log');
}
const eolReg = new RegExp(EOL + '$');
export function removeEOL(str: string): string {
eolReg.lastIndex = 0;
return str.replace(eolReg, '');
}
export async function backupLog(file, newName?) {
newName = newName || file + '.' + yyyymmdd(new Date, '-') + '-' + Date.now();
await mzFs.rename(file, newName);
}
/**
* Prevent cycle dependencies
* @return {any}
*/
function lazyGetGlobalConfig () {
const globalConfigProcessor = require('./GlobalConfigProcessor').GlobalConfigProcessor.getInstance();
return globalConfigProcessor.getAllProperties();
}
export function yyyymmdd (date, sp) {
const mm = date.getMonth() + 1;
const dd = date.getDate();
return [date.getFullYear(),
(mm > 9 ? '' : '0') + mm,
(dd > 9 ? '' : '0') + dd
].join(sp || '');
};