123 lines
2.7 KiB
JavaScript
123 lines
2.7 KiB
JavaScript
'use strict';
|
|
import fs from 'fs-extra';
|
|
import FileStreamRotator from 'file-stream-rotator';
|
|
import bunyan from 'bunyan';
|
|
import config from '../../config/config';
|
|
import AdminLog from '../models/admin/AdminLog';
|
|
|
|
|
|
const env = process.env.NODE_ENV || 'development';
|
|
const isDev = env === 'development';
|
|
|
|
const logDir = config.logs_path;
|
|
fs.existsSync(logDir) || fs.mkdirSync(logDir);
|
|
|
|
let logger = null;
|
|
const createLogger = function(appName) {
|
|
appName = !appName ? config.app.name : appName;
|
|
const streams = [{
|
|
level: 'info',
|
|
stream: FileStreamRotator.getStream({
|
|
date_format: 'YYYYMMDD',
|
|
filename: `${logDir}/${appName}-%DATE%.log`,
|
|
frequency: 'daily',
|
|
verbose: false,
|
|
}),
|
|
}];
|
|
if (isDev) {
|
|
streams.push({
|
|
level: 'debug',
|
|
stream: process.stdout,
|
|
});
|
|
}
|
|
return bunyan.createLogger({
|
|
name: appName,
|
|
serializers: bunyan.stdSerializers,
|
|
streams: streams,
|
|
src: false,
|
|
});
|
|
};
|
|
export default {
|
|
info(obj, msg) {
|
|
if (!logger) {
|
|
logger = createLogger(global.app_name);
|
|
}
|
|
if (msg) {
|
|
logger.info(obj, msg);
|
|
} else {
|
|
logger.info(obj);
|
|
}
|
|
},
|
|
error(obj, msg) {
|
|
if (!logger) {
|
|
logger = createLogger(global.app_name);
|
|
}
|
|
if (msg) {
|
|
logger.error(obj, msg);
|
|
} else {
|
|
logger.error(obj);
|
|
}
|
|
},
|
|
warn(obj, msg) {
|
|
if (!logger) {
|
|
logger = createLogger(global.app_name);
|
|
}
|
|
if (msg) {
|
|
logger.warn(obj, msg);
|
|
} else {
|
|
logger.warn(obj);
|
|
}
|
|
},
|
|
debug(obj, msg) {
|
|
if (!logger) {
|
|
logger = createLogger(global.app_name);
|
|
}
|
|
if (msg) {
|
|
logger.debug(obj, msg);
|
|
} else {
|
|
logger.debug(obj);
|
|
}
|
|
},
|
|
trace(obj, msg) {
|
|
if (!logger) {
|
|
logger = createLogger(global.app_name);
|
|
}
|
|
if (msg) {
|
|
logger.trace(obj, msg);
|
|
} else {
|
|
logger.trace(obj);
|
|
}
|
|
},
|
|
fatal(obj, msg) {
|
|
if (!logger) {
|
|
logger = createLogger(global.app_name);
|
|
}
|
|
if (msg) {
|
|
logger.fatal(obj, msg);
|
|
} else {
|
|
logger.fatal(obj);
|
|
}
|
|
},
|
|
db(req, logObj, name) {
|
|
const user = req.user;
|
|
const ip = req.headers['x-forwarded-for'];
|
|
const path = req.baseUrl + req.path;
|
|
const params = req.method === 'GET' ? req.query : req.body;
|
|
const dataObj = JSON.stringify(logObj) === '{}' ? params : logObj;
|
|
const obj = new AdminLog({
|
|
admin: user.id,
|
|
username: user.username,
|
|
path: path,
|
|
method: req.method,
|
|
params: dataObj,
|
|
referer: req.headers['referer'],
|
|
user_agent: req.headers['user-agent'],
|
|
ip: ip,
|
|
show_name: name,
|
|
});
|
|
obj.save().then(()=>{}).catch((err)=> {
|
|
logger.error(err);
|
|
});
|
|
},
|
|
};
|