在实习中,遇到了一个需要将用户登录的信息记录到日志当中,在这次项目中时用的bunyan。
首先贴网址https://github.com/trentm/node-bunyan(npm也是相当有用的)
https://www.npmjs.com/package/bunyan
查看文档可以详细的知道bunyan的api
const logger = bunyan.createLogger({
name: 'website name',
serializers: {
req: bunyan.stdSerializers.req,
res: bunyan.stdSerializers.res,
err: bunyan.stdSerializers.err
},
streams: [
{
// stream: process.stdout
type: 'rotating-file',
level: 'info',
path: path.join(__dirname, '../../../logs', 'info.log'),
period: '1d', // daily rotation
count: 7 // keep 7 back copies
},
{
type: 'rotating-file',
level: 'debug',
path: path.join(__dirname, '../../../logs', 'server.log'),
period: '1d', // daily rotation
count: 7 // keep 7 back copies
},
{
type: 'rotating-file',
level: 'error',
path: path.join(__dirname, '../../../logs', 'error.log'),
period: '1d', // daily rotation
count: 7 // keep 7 back copies
}
]
});
以上是写了三种level的streams,可以设置多个,这个在文档中也可以找到,对应的,使用的时候可以
import logger from '../util/logger';
logger.info({
name:'zhangsan',
age:12
}, 'logger success');
当然还有logger.error......等等
项目一启动就可以生成对应的日志文件了
bunyan自动添加的字段为"pid", "hostname", "time" 和"v".在这个基础上可以添加自己需要的字段
构造函数api
var bunyan = ;
var log = bunyan
;
logger.info的api
log; // Returns a boolean: is the "info" level enabled?
// This is equivalent to `log.isInfoEnabled()` or
// `log.isEnabledFor(INFO)` in log4j.
log; // Log a simple string message (or number).
log; // Uses `util.format` for msg formatting.
log;
// The first field can optionally be a "fields" object, which
// is merged into the log record.
log; // Special case to log an `Error` instance to the record.
// This adds an "err" field with exception details
// (including the stack) and sets "msg" to the exception
// message.
log;
// ... or you can specify the "msg".
log;
// To pass in an Error *and* other fields, use the `err`
// field name for the Error instance.
所有日志等级:log.trace
, log.debug
, log.info
, log.warn
, log.error
, log.fatal
.
剩下的就得去看文档了