winton - 每日轮换文件
运输 温通 输入旋转文件。 日志可以根据日期,大小限制来旋转,而旧日志可以根据计数日或已过期日来取出.
从2.0版本开始,运输器被重置,以利用 文件流旋转器 模块. 1.x版本运输的一些选项已经改变. 请审查以下备选办法,以确定需要作哪些修改.
兼容性
请注意,如果使用 winston@2,您需要使用 winston-daily-rotate-file@3。 。 。 . winston-daily-rotate-file@4 删除支持 winston@2。 。 。 .
从5.0.0版本开始,本模块也对所有低级文件系统出错案例发出"error"事件. 请为此事件收听, 以防止您的应用程序中发生相撞 .
这个库应该从Node.js 8.x开始工作,但测试只针对Node.js 14+执行. 在下节点.js版本中自担风险使用.
安装
npm install winston-daily-rotate-file
选项
Daily RotateFile运输可以按分钟,小时,日,月,年或工作日来旋转文件. 除了伐木工接受的选项外, winston-daily-rotate-file 还接受以下选项:
- 频率 : 表示旋转频率的字符串 。 如果您想要有定时旋转, 而不是在特定时刻发生的旋转, 这样做是有用的 。 有效值为"#m"或"#h"(如"5m"或"3h"). 离开这个虚无依赖
datePattern用于旋转时间。 (默认: 无效) - 日期标签 : 一个代表 moment.j 日期格式 用于旋转。 此字符串中使用的元字符会决定文件旋转的频率. 例如, 如果您的datePattern 仅仅是“ HH ” , 则您终会收到24个日志文件, 这些文件每天被取出并附上 。 (默认:"YYY-MM-DD")
- 已拉链箭头 : 用于定义 gzip 存档日志文件是否使用的布尔 。 (默认 : “ 假” )
- 文件名 : 要登录的文件名 。 此文件名可以包含
%DATE%占位符,其中将包含文件名中此时格式化的日期样式。 (默认:"winston.log. % 日期%') - 目录 : 要保存日志文件的目录名称 。 (默认:'.')
- 流线 : 直接写入自定义流并绕过自转能力. (默认: 无效)
- 最大尺寸 : 最大文件大小, 然后它会旋转 。 这可以是数个字节,或kb,mb,和gb的单位. 如果使用这些单位,则添加“k”、“m”或“g”作为后缀。 各单位需要直接跟随编号. (默认: 无效)
- 最大文件夹 : 要保存的最大日志数 。 如果不设定, 将不会删除日志 。 这可以是多个文件或天数. 如果使用天数,则添加"d"作为后缀. 它使用审计文件来以json格式跟踪日志文件. 它不会删除任何没有包含在其中的文件. 可以是多个文件或天数( 默认: 无效)
- 选项: 类似对象 https://nodejs.org/api/fs.html#fs fs createwritestream path options 互联网档案馆的存檔,存档日期2013-12-22 显示应当传递到文件流的其他选项。 (默认 :
{ flags: 'a' }(中文(简体) ) - 审计文件: 代表审计文件路径的字符串,直接传递给 文件流旋转器 作为
audit_file如果未指定,则生成一个文件名,包括从选项对象计算出来的散列,并使用dirname选项值作为目录。 (默认 :<dirname>/.<optionsHash>-audit.json(中文(简体) ) - 关卡: 使用世界协调时的时间进行文件名中的日期。 (默认:虚假)
- 扩展: 文件扩展名将附加在文件名上。 (默认:`')
- 创建系统链接: 创建与当前活动日志文件的可尾可并联链接. (默认:虚假)
- 符号链接Name:可被尾接的同音链接的名称. (默认 : “ 当前.log ” )
- 审计 HashType: 使用指定的散列算法进行审计。 (默认:"sha256")
- 职等: 用于运输的伐木层名称,如果未指定从
createLogger将使用方法
使用量
var winston = require('winston');
require('winston-daily-rotate-file');
var transport = new winston.transports.DailyRotateFile({
level: 'info',
filename: 'application-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
transport.on('error', error => {
// log or handle errors here
});
transport.on('rotate', (oldFilename, newFilename) => {
// do something fun
});
var logger = winston.createLogger({
transports: [
transport
]
});
logger.info('Hello World!');
使用多路运输
var winston = require('winston');
require('winston-daily-rotate-file');
var transport1 = new winston.transports.DailyRotateFile({
filename: 'application-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
var transport2 = new winston.transports.DailyRotateFile({
level: 'error',
filename: 'application-error-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
transport1.on('error', error => {
// log or handle errors here
});
transport2.on('error', error => {
// log or handle errors here
});
transport1.on('rotate', function(oldFilename, newFilename) {
// do something fun
});
transport2.on('rotate', function(oldFilename, newFilename) {
// do something fun
});
var logger = winston.createLogger({
level: 'info'
transports: [
transport1, // will be used on info level
transport2 // will be used on error level
]
});
logger.info('Hello World!');
logger.error('Hello Error!');
ES6 标准
import * as winston from 'winston';
import 'winston-daily-rotate-file';
const transport = new winston.transports.DailyRotateFile({
filename: 'application-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
transport.on('error', error => {
// log or handle errors here
});
transport.on('rotate', (oldFilename, newFilename) => {
// do something fun
});
const logger = winston.createLogger({
transports: [
transport
]
});
logger.info('Hello World!');
字体
import * as winston from 'winston';
import DailyRotateFile from 'winston-daily-rotate-file';
const transport: DailyRotateFile = new DailyRotateFile({
filename: 'application-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
transport.on('error', error => {
// log or handle errors here
});
transport.on('rotate', (oldFilename, newFilename) => {
// do something fun
});
const logger = winston.createLogger({
transports: [
transport
]
});
logger.info('Hello World!');
此运算显示以下自定义事件:
- 新设: 当创建了新日志文件时开火 。 此事件将传递一个参数到回调(新文件名称) (中文(简体) ).
- 旋转:当日志文件被旋转时开火. 此事件将传递两个参数到召回( Name旧文件名, (中文(简体) ), 新文件名称) (中文(简体) ).
- 归档: 日志文件存档时已开火 。 此事件将传递一个参数到回调(拉链文件名) (中文(简体) ).
- 日志已删除:当一个日志文件从文件系统中被删除时被发射. 此事件将传递一个参数到回调(已删除文件名) (中文(简体) ).
-
- 错误: 当发生低级别文件系统错误时开火( 如 EACCESS)
自由主义
麻省理工学院
