UNPKG

pandora

Version:

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

88 lines (73 loc) 2.48 kB
'use strict'; 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 || ''); };