autolog4j
Version:
> use
67 lines (58 loc) • 1.46 kB
JavaScript
const log4js = require('log4js');
const fs = require('fs');
let levels = {
trace: log4js.levels.TRACE,
debug: log4js.levels.DEBUG,
info: log4js.levels.INFO,
warn: log4js.levels.WARN,
error: log4js.levels.ERROR,
fatal: log4js.levels.FATAL,
}
const configureLog4js = {
appenders: {
ruleFile: {
type: 'dateFile',
filename: 'logs/',
pattern: 'yyyy-MM-dd.log',
alwaysIncludePattern: true,
}
},
categories: {
default: {
appenders: [
'ruleFile'
], level: 'all'
},
},
replaceConsole: true,
pm2: true,
pm2InstanceVar: 'INSTANCE_ID',
}
class Logger{
constructor(app) {
this.app = app;
this.configure = app.get('log4js') || configureLog4js;
this._init();
}
judgePath(pathStr) {
if (!fs.existsSync(pathStr)) fs.mkdirSync(pathStr);
}
_init() {
log4js.configure(this.configure);
}
logger(name) {
return log4js.getLogger(name);
}
use(level) {
this.app.use(log4js.connectLogger(log4js.getLogger('logInfo', {
level: levels[level] || levels.info,
format: (req, res, fmt) => {
return `${fmt(':date :remote-addr :method :url :status')} ${res.responseTime}ms`;
}
})));
}
}
module.exports = (app) => {
return new Logger(app);
}
;