log4js 关于 Appender 的介绍及回滚生成日志文件的方法 “dateFile ”

Log4js - Appenders

appender 将日志事件序列化为某种形式的输出。可以写文件,发送电子邮件,通过网络发送数据。所有的 appender 都有一个 type 来决定哪个 appender 被使用。

例如:

const log4js = require('log4js');
log4js.configure({
  appenders: {
    out: { type: 'stdout' },
    app: { type: 'file', filename: 'application.log' }
  },
  categories: {
    default: { appenders: [ 'out', 'app' ], level: 'debug' }
  }
});

上面代码定义了两个 appender,一个叫out,一个叫appout使用 stdout appender 来编写标准输出。app使用 file appender 将日志写进 application.log 文件中。

Core Appenders

下面的 appender 都是 log4js 支持的。

有些需要额外的依赖项,而这些依赖项并不包含在log4js中(例如,smtp appender 需要 nodemailer),这些将在appender的文档中注明。

dateFile / Date Rolling File Appender (日期滚动文件 appender)

这是一个 file appender,它基于一个可配置的时间来滚动日志文件。若使用 date file appender ,必须调用log4js.shutdown来确保应用程序终止时剩余异步写是完成的。date file appender 使用 streamroller 库,但该库是 log4js 的一个依赖项,所以不需要自己包含它。

Configuration
  • type - "dateFile"
  • filename - string - 要写入日志的文件路径
  • pattern - string (可选, 默认模式为 .yyyy-MM-dd) - 当前日志文件被重命名并且创建了一个新的日志文件时,pattern用来决定重命名后的文件名格式。例如,假设当前要写入日志的文件叫 cheese.log,使用默认 pattern.yyyy-MM-dd,则一开始会创建一个日志文件名为 cheese.log,到第二天 cheese.log 会被重命名为 cheese.log.2017-04-30 并且一个新的日志文件名为 cheese.log 又会被创建。
    • appender 使用 date-format 库来解析 pattern
    • 另外要注意,没有计时器控制日志滚动,模式的变化是在每一个日志写入中确定的。如果没有写操作,就不会发生日志滚动。如果您的应用程序不频繁地记录,那么就可能导致在特定的时间段内没有写入日志文件。
  • layout - (可选, 默认为基础布局) - 布局

其他的配置参数将会传递给底层 streamroller 实现:

  • encoding - string (默认为“utf-8”)
  • mode- integer (默认为 0644)
  • flags - string (默认为 ‘a’)
  • compress - boolean (默认为 false) - 在滚动期间压缩备份文件(备份文件将具有.gz扩展名)
  • alwaysIncludePattern - boolean (默认为 false) - 在当前日志文件的名称和备份中包含模式。
  • daysToKeep - integer (默认为 0) - 如果这个值大于零,那么在日志滚动期间,将会删除超过这段时间的文件。
  • keepFileExt - boolean (默认为 false) - 在改变日志文件名时保留文件扩展名 (file.log 将会被改名为 file.2018-06-20.log 而不是 file.log.2018-06-20)
例子 (默认日志按天滚动)
log4js.configure({
  appenders: {
    everything: { type: 'dateFile', filename: 'all-the-logs.log' }
  },
  categories: {
    default: { appenders: [ 'everything' ], level: 'debug' }
  }
});

上面这个样例将会按天生成日志记录文件。初始文件为 all-the-logs.log,过一天后文件会被重命名为 all-the-logs.log.2018-06-20。

例子(日志按小时滚动并且进行压缩备份)
log4js.configure({
  appenders: {
    everything: { type: 'dateFile', filename: 'all-the-logs.log', pattern: '.yyyy-MM-dd-hh', compress: true }
  },
  categories: {
    default: { appenders: [ 'everything' ], level: 'debug'}
  }
});

初始文件为 all-the-logs.log,这个文件每小时都会被压缩并且被重命名为 all-the-logs.log.2018-06-20-10.gz,并且会重新生成一个文件 all-the-logs.log。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值