在我们开发项目时,日志是必不可少的一部分,有助于我们排错、数据分析等等。而nodejs自带的console日志不太友好,比如不同级别的日志都是相同的颜色,很难区分。在开发Java时,log4j几乎是必选项。在nodejs中,类似的一个工具是log4js。该篇博客主要来学习如何使用log4js日志工具。
var express = require('express');
var app = express();
var log4js = require('log4js');
log4js.configure({
appenders: [
{type: 'console'},
{
type: 'file',
filename: './access.log',
maxLogSize: 10,
backups: 6,
category: 'normal'
}
],
replaceConsole: true
});
var logger = log4js.getLogger('normal');
logger.setLevel('DEBUG');
app.use(log4js.connectLogger(logger, { level: 'auto', format:':method :url'}));
logger.debug("loglog");
logger.info("infoinfo");
logger.error("errorerror");
console.log("测试");
console.error("错误");
app.get('/', function (req, res) {
res.send("hello");
});
app.listen(3000, function () {
console.log("Server Running on http://localhost:3000");
});
var log4js = require('log4js');
在当前文件中加载log4js包。
log4js.configure({
appenders: [
{type: 'console'},
{
type: 'file',
filename: './access.log',
maxLogSize: 10,
backups: 6,
category: 'normal'
}
],
replaceConsole: true
});
var logger = log4js.getLogger('normal');
logger.setLevel('DEBUG');
app.use(log4js.connectLogger(logger, { level: 'auto', format:':method :url'}));
日志的一个重要功能不仅仅是在调试时使用,最重要的还是当前端发起请求时,能把该请求记录在日志中,该行代码的作用就是这个功能。其中的level参数表示日志输出级别,设置为auto,日志级别对应规则为:
logger.debug("loglog");
logger.info("infoinfo");
logger.error("errorerror");
使用logger实例打印不同级别的日志,在控制台中输出如下:
console.log("测试");
console.error("错误");
也可以直接使用nodejs自带的console打印。此时打印的日志颜色很好的做了区分,已经不同于原先默认的日志了:
app.get('/', function (req, res) {
res.send("hello");
});
app.use(log4js.connectLogger(logger, { level: 'auto'}));
var log4js = require('log4js');
var appender = null;
var logger = log4js.getLogger('normal');
logger.setLevel('INFO');
var connectLogLevel = 'auto';
var connectLogFormat = ':method :url';
module.exports = {
logger: logger,
connectLogLevel: connectLogLevel,
connectLogFormat: connectLogFormat
};
module.exports.config = function (logRoute) {
appender = {
appenders: [
{type: 'console'},
{
type: 'file',
filename: logRoute,
maxLogSize: 1024000,
backups: 10,
category: 'normal'
}
],
replaceConsole: true
};
return appender;
};
var log4js = require('log4js');
var log4jsConfig = require('./log4jsConfig');
log4js.configure(log4jsConfig.config('./access.log'));
app.use(log4js.connectLogger(log4jsConfig.logger, {
level: log4jsConfig.connectLogLevel,
format: log4jsConfig.connectLogFormat
}));