Log4js输出JSON日志--Node.js

log4js.js配置文件

 // log4js.js
const log4js = require('log4js')

log4js.configure({
  appenders: {
    console:{ type: 'console'},
    error: {
      type: 'dateFile', //日志类型
      category: 'errLogger', //日志名称
      filename: 'logs/errlog/err', //日志输出位置,当目录文件或文件夹不存在时自动创建
      pattern: 'yyyy-MM-dd.log', 日志输出模式
	   alwaysIncludePattern: true,
      maxLogSize: 104800, // 文件最大存储空间
      backups: 100 //当文件内容超过文件存储空间时,备份文件的数量
    },
    response: {
      type: 'dateFile',
      category: 'resLogger',
      filename: 'logs/reqlog/req',
      pattern: 'yyyy-MM-dd.log', 
      alwaysIncludePattern: true,
      maxLogSize: 104800,
      backups: 100,
    }
  },
  categories: {
    error: {
      appenders: ['error'],
      level: 'error'
    },
    response: {
      appenders: ['response'],
      level: 'info'
    },
    default: {
      appenders: ['response'],
      level: 'info'
    }
  },
  replaceConsole: true,
  pm2: true, //若您的 app 使用了 pm2,则这里必须设置为true,否则日志将不会工作(另外您还得下载 pm2-intercom作为 pm2模块: pm2 install pm2-intercom)
})
//
let levels = {
  'trace': log4js.levels.TRACE,
  'debug': log4js.levels.DEBUG,
  'info': log4js.levels.INFO,
  'warn': log4js.levels.WARN,
  'error': log4js.levels.ERROR,
  'fatal': log4js.levels.FATAL
};
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]' //自定义输出格式
  }))
}

运用:
在需要添加log的页面

const log4js = require('../utils/log4js.js'); //log日志
const logger = log4js.getLogger('');
logger.info({"url":"xxxxx","username":"xxxx"}")

输出的日志格式是JSON

第一种方法:

const log4js = require('log4js')
log4js.addLayout('json', function(config) {
  return function(logEvent) { return JSON.stringify(logEvent) + config.separator; }
});

输出:

[2020-04-01T15:25:35.031] [INFO] default - {"url":"xxxxx","username":"xxxx"}"

第二种方法:
安装 log4js-json-layout

npm install log4js-json-layout

在页面中引入并使用

const log4js = require('log4js');
const jsonLayout = require('log4js-json-layout');
log4js.addLayout('json', jsonLayout);
log4js.configure({
 replaceConsole: true,
 appenders: {
    console:{ type: 'console'},
    error: {
      type: 'dateFile', //日志类型
      category: 'errLogger', //日志名称
      filename: 'logs/errlog/err', //日志输出位置,当目录文件或文件夹不存在时自动创建
      pattern: 'yyyy-MM-dd.log',
	    alwaysIncludePattern: true,
      maxLogSize: 104800, // 文件最大存储空间
      backups: 100 ,//当文件内容超过文件存储空间时,备份文件的数量
      layout: { type: 'json', separator: ',' }
    },
    response: {
      type: 'dateFile',
      category: 'resLogger',
      filename: 'logs/log',
      pattern: 'yyyy-MM-dd.log', //日志输出模式
      alwaysIncludePattern: true,
      maxLogSize: 104800,
      backups: 100,
      layout: { type: 'json', separator: ',' },
    },
  },
  、、、、、、

输出

{"startTime":"2020-04-09T03:28:20.866Z","categoryName":"default","level":"INFO","url":"xxxxx","username":"xxxx"}

log4js介绍

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值