分享一个NodeJS中写日志的第三方包:Log4js.
安装log4js
npm install log4js
创建log.js
/**
* Created by hu on 2019/1/9
*/
const path = require('path');
const log4js = require('log4js');
const logPath = process.env.LOG_PAHT || CONFIG.log.path,
logType = CONFIG.log.type || 'info',
logLevel = (CONFIG.log.level || 'all').toUpperCase();
// 自定义日志类别
log4js.configure({
appenders: [
{
type: 'console',
category: "console"
}, // 控制台输出
{
type: 'file',
category: 'fileLog',
filename: path.join(logPath, 'log.log'),
maxLogSize: 104857600,
backups: 100
}, // 单文件输出
{
type: 'logLevelFilter',
level: 'DEBUG',
category: 'recordRequestTime',
appender: {
type: 'file',
filename: path.join(logPath, 'time.log'),
pattern: '-yyyy-MM-dd.log',
alwaysIncludePattern: true,
},
},
{
type: 'logLevelFilter',
level: 'DEBUG',
category: 'recordUploadFileError',
appender: {
type: 'file',
filename: path.join(logPath, 'upload.log'),
pattern: '-yyyy-MM-dd.log',
alwaysIncludePattern: true,
},
},
{
type: "dateFile",
category: 'dateFileLog',
filename: path.join(logPath, 'log'),
pattern: "-yyyy-MM-dd.log",
alwaysIncludePattern: true
} // 日期格式文件输出
],
replaceConsole: true, //替换console.log
levels: {
console: 'ALL',
fileLog: 'ALL',
dateFileLog: 'ALL'
}
});
const logger = log4js.getLogger(logType || 'dateFileLog');
const getLogger = (type) => {
return log4js.getLogger(type);
}
// 设置日志级别
logger.setLevel(logLevel.toUpperCase());
// 设置日志脱敏
logger.setMask(CONFIG.log.mask);
exports.logger = logger;
exports.getLogger = getLogger;
exports.use = (app) => {
app.use(log4js.connectLogger(logger, {level: 'info', format: ':method :url :status :response-timems'}));
}
创建系统配置文件 config/index.js
const config = {
debug: true,
log: {
path: './',
type: 'console',
level: 'debug',
mask: true
}
}
module.exports = config;
在入口文件 app.js 中添加全局LOG和CONFIG
// 系统配置
global.CONFIG = require('./config/index');
// 日志对象
const log = require('./log');
global.LOG = log.logger;
global.TIMELOG = log.getLogger('recordRequestTime');
global.UPLOADERROR = log.getLogger('recordUploadFileError');
调用日志user.js
var express = require('express');
var router = express.Router();
const request = require('request');
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express-test' });
});
// 接口
router.get('/gettest', (req, res, next) => {
request.get({
url: `http-url`,
json: req.body,
headers:{
'Content-Type': 'application/json',
},
gzip:true,
}, (err, response, body) => {
LOG.info(body); // 调用日志
if (err) {
res.json(err);
} else {
res.json(body);
}
});
});
module.exports = router;
网友评论