node日志可以使用日志管理工具log4js来查看。log4js是一个nodejs日志管理工具,可以将日志以各种形式输出到各种渠道。
log4js:
特点stdout 或 stderr 彩色控制台记录
File Appender,可根据文件大小或日期配置日志滚动
File Appender
GELF appender
Loggly appender
Logstash UDP appender
logFaces (UDP and HTTP)appender
multiprocess appender (当你有多个服务器但想要集中日志记录时非常有用)
Connect / Express Logger 日志程序
可配置的日志消息 layout/patterns
不同日志类别的不同日志级别(将应用程序的某些部分作为调试,其他部分仅作为错误,等等)。
内置的支持,可以使用 node core cluster 模块进行日志记录。
安装npm install log4js
简单使用var log4js = require('log4js');
var logger = log4js.getLogger();
logger.level = 'debug'; // default level is OFF - which means no logs at all.
logger.debug("Some debug messages");
log4js单独配置到一个文件,其他要使用的引用这个文件。
log-config.js:const log4js = require('log4js')
log4js.configure({
replaceConsole: true,
appenders: {
stdout: {//控制台输出
type: 'stdout'
},
req: {//请求日志
type: 'dateFile',
filename: 'logs/reqlog/',
pattern: 'req-yyyy-MM-dd.log',
alwaysIncludePattern: true
},
err: {//错误日志
type: 'dateFile',
filename: 'logs/errlog/',
pattern: 'err-yyyy-MM-dd.log',
alwaysIncludePattern: true
},
oth: {//其他日志
type: 'dateFile',
filename: 'logs/othlog/',
pattern: 'oth-yyyy-MM-dd.log',
alwaysIncludePattern: true
}
},
categories: {
default: { appenders: ['stdout', 'req'], level: 'debug' },
//appenders:采用的appender,取appenders项,level:设置级别
err: { appenders: ['stdout', 'err'], level: 'error' },
oth: { appenders: ['stdout', 'oth'], level: 'info' }
}
})
exports.getLogger = function (name) {//name取categories项
return log4js.getLogger(name || 'default')
}
exports.useLogger = function (app, logger) {//用来与express结合
app.use(log4js.connectLogger(logger || log4js.getLogger('default'), {
format: '[:remote-addr :method :url :status :response-timems][:referrer HTTP/:http-version :user-agent]'
//自定义输出格式
}))
}
使用:const log4js= require('./log-config')
const logger = log4js.getLogger()//根据需要获取logger
const errlogger = log4js.getLogger('err')
const othlogger = log4js.getLogger('oth')
//结合express使用,记录请求日志
app = express()
log4js.useLogger(app,logger)//这样会自动记录每次请求信息,放在其他use上面
//手动记录,可以代替console.log
logger.info('test info 1')
errlogger.err('test error 1')
othlogger.info('test info 2')