文件流旋转器
节点JS 文件流旋转器
目的
提供Express/Connect日志或其他任何需要按日期旋转的定期写入文件的自动旋转,大小限制或组合,并按计数或过期日删除旧日志文件.
安装
npm install file-stream-rotator
选项
- 文件名: 文件名,包括流所用的完整路径
- 频率:如何频繁地旋转. 选项是“ 每日”、“ 客户” 和“ 测试 ” 。 "测试"每分钟旋转一次. 如果将频率设置为以上无一,则文件名的末尾会添加一个YYYYMMDD字符串.
- 动词: 如果设置了, 它会在旋转文件和日志文件名称时登录到 STDOUT 。 默认是TRUE.
- 日期( f): momentjs.com/docs/#/Displaying/format/。 (中文(简体) ). 该结果用于替换 文件名中的“%Date%”占位符. 如果使用"Custom"频率,则用于在字符串表示变化时触发文件旋转.
- 大小: 文件的最大大小, 之后会旋转 。 它可以与频率或日期格式相结合. 大小单位为"k","m"和"g". 单位需要直接跟随数字,如1g,100m,20k.
- 最大值( l) 要保存的最大日志数 。 如果不设定, 它不会删除过去的日志 。 它使用自己的日志审计文件 以 json 格式跟踪日志文件。 它不会删除任何没有包含在其中的文件. 它可以是多个文件或天数. 如果使用天数,则添加"d"作为后缀.
- 审计文件 存储日志审计文件的位置 。 如果没有设定,则会被存储在应用程序的根.
- 结束流( s) 结束流( 真) 而不是毁灭( 默认: 假) 。 如果在写入时将值设定为真 如果程序终止或日志旋转,待冲走的数据可能会丢失.
- 文件选项 一个物体传到溪上。 这可用于指定旗帜,编码和模式.
见 https://nodejs.org/api/fs.html#fs fs createwritestream path options 互联网档案馆的存檔,存档日期2013-12-22默认
{ flags: 'a' }。 。 。 . - 关卡 在文件名中使用 UTC 时间 。 默认为“ FALSE ”
- 扩展 文件扩展名将附加在文件名上 。 在使用大小限制作为旋转时有用 满足所需大小时, 在文件名末尾添加一个数 (1, 2, 3, 4,...) .
- 监视( l) 注意当前文件被写入,并在意外删除时重新创建. 默认为“ FALSE ”
- 创建符号链接( s) 创建当前活动日志文件的可尾链接 。 默认为“ FALSE ”
- 符号链接 名称 创建符号链接时使用的名称 。 默认为“ 当前.log ”
- 审计 hash 类型 使用指定的散列算法进行审计 。 默认为“ md5 ” 。 使用"sha256"进行FIPS合规.
示例使用
// Default date added at the end of the file
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/test.log", frequency:"daily", verbose: false});
// Default date added using file pattern
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/test-%DATE%.log", frequency:"daily", verbose: false});
// Custom date added using file pattern using moment.js formats
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/test-%DATE%.log", frequency:"daily", verbose: false, date_format: "YYYY-MM-DD"});
// Rotate when the date format as calculated by momentjs is different (e.g monthly)
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/test-%DATE%.log", frequency:"custom", verbose: false, date_format: "YYYY-MM"});
// Rotate when the date format as calculated by momentjs is different (e.g weekly)
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/test-%DATE%.log", frequency:"custom", verbose: false, date_format: "YYYY-ww"});
// Rotate when the date format as calculated by momentjs is different (e.g AM/PM)
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/test-%DATE%.log", frequency:"custom", verbose: false, date_format: "YYYY-MM-DD-A"});
// Rotate on given minutes using the 'm' option i.e. 5m or 30m
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/test.log", frequency:"5m", verbose: false});
// Rotate on the hour or any specified number of hours
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/test.log", frequency:"1h", verbose: false});
// Rotate on the hour or any specified number of hours and keep 10 files
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/test.log", frequency:"1h", verbose: false, max_logs: 10});
// Rotate on the hour or any specified number of hours and keep 10 days
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/test.log", frequency:"1h", verbose: false, max_logs: "10d"});
// Rotate on the hour or any specified number of hours and keep 10 days and store the audit file in /tmp/log-audit.json
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/test.log", frequency:"1h", verbose: false, max_logs: "10d", audit_file: "/tmp/log-audit.json"});
// Rotate by file size only without date included in the name. Iteration will be added at the end.
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/logfile", size:"50k", max_logs: "5", audit_file:"/tmp/logaudit.json"});
// Rotate by file size only without date included in the name. Rotation added before the extension.
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/logfile", size:"50k", max_logs: "5", audit_file:"/tmp/logaudit.json". extension: ".log"});
//.....
// Use new stream in express
app.use(express.logger({stream: rotatingLogStream, format: "default"}));
//.....
你可以听从 打开, (中文(简体) ), 关闭, (中文(简体) ), 错误 财务报告和审定财务报表 结束 由开源流生成的事件。 您也可以收听自定义事件 :
- 旋转: 这将传递两个参数到回调: (旧文件名, (中文(简体) ), 新文件名称(中文(简体) )
- 新设: 这将传递一个参数到回调 : 新文件名称
- 日志已删除: 这将传递一个参数到召回: {日期: unix timestamp, (英语), 名称: 文件名 已删除, 散列轴: log file unique 识别符}
您还可以通过使用"k","m"和"g"来添加大小选项来限制每个文件的大小,以千字节,兆字节或千兆字节来指定文件的大小. 当它根据大小旋转一个文件时,它会给结尾增加一个数字,并在文件在给定期间每次旋转时递增它,如下所示.
3078 7 Mar 13:09:58 2017 testlog-2017-03-07.13.09.log.20
2052 7 Mar 13:10:00 2017 testlog-2017-03-07.13.09.log.21
3078 7 Mar 13:10:05 2017 testlog-2017-03-07.13.10.log.1
3078 7 Mar 13:10:08 2017 testlog-2017-03-07.13.10.log.2
3078 7 Mar 13:10:11 2017 testlog-2017-03-07.13.10.log.3
3078 7 Mar 13:10:14 2017 testlog-2017-03-07.13.10.log.4
下面的例子将每天旋转文件,但每个文件将限于5MB.
// Rotate every day or every 5 megabytes, whatever comes first.
var rotatingLogStream = require('file-stream-rotator').getStream(
{
filename:"/tmp/test-%DATE%.log",
frequency:"custom",
verbose: false,
date_format: "YYYY-MM-DD",
size: "5M" // its letter denominating the size is case insensitive
}
);
rotatingLogStream.on('rotate',function(oldFile,newFile){
// do something with old file like compression or delete older than X days.
})
国家预防机制维护者
此库的 npm 模块将由以下维护:
贡献者
感谢下面的撰稿人提高公关和所有其他提出问题的人提高该单元的素质.
许可证
档案流程旋转器根据麻省理工学院许可证获得许可.