推荐使用 file-stream-rotator:NodeJS 日志自动旋转工具
项目介绍
file-stream-rotator
是一个专为 NodeJS 设计的日志文件自动旋转工具。它能够根据日期、文件大小或两者的组合自动旋转日志文件,并支持删除旧日志文件以节省空间。无论是 Express/Connect 日志还是其他需要定期写入文件的场景,file-stream-rotator
都能提供高效的日志管理解决方案。
项目技术分析
file-stream-rotator
的核心功能包括:
- 自动旋转:根据设定的频率(如每日、每小时、每分钟)或文件大小自动旋转日志文件。
- 日期格式化:支持多种日期格式,如年、月、日、小时、分钟和秒,以及 AM/PM 文本替换。
- 文件大小限制:可以设定文件的最大大小,超过该大小后自动旋转。
- 日志保留策略:支持按文件数量或天数保留日志文件,并使用审计文件跟踪日志文件。
- 流处理:提供灵活的流处理选项,支持自定义文件打开、关闭、错误和完成事件。
项目及技术应用场景
file-stream-rotator
适用于以下场景:
- Web 服务器日志管理:适用于 Express/Connect 等 Web 框架的日志管理。
- 定期任务日志:适用于需要定期生成日志文件的任务,如定时备份、数据同步等。
- 日志分析系统:适用于需要对日志文件进行长期存储和分析的系统。
- 日志归档:适用于需要定期归档和清理日志文件的场景。
项目特点
- 灵活的配置选项:支持多种频率、日期格式和文件大小限制,满足不同需求。
- 高效的日志管理:自动旋转和删除旧日志文件,节省存储空间。
- 易于集成:可以轻松集成到现有的 NodeJS 项目中,支持 TypeScript 和 JavaScript。
- 事件驱动:支持自定义事件处理,如旋转事件、新文件事件和日志删除事件。
- 无外部依赖:自版本 1 起,移除了外部依赖,内部处理日期替换,提高了性能和稳定性。
安装与使用
npm install file-stream-rotator
TypeScript 示例
import * as FileStreamRotator from 'file-stream-rotator'
var rotatingLogStream = FileStreamRotator.getStream({
filename: "/tmp/test-%DATE%",
frequency: "daily",
date_format: "YYYY-MM-DD",
size: "100M",
max_logs: "10",
audit_file: "/tmp/audit.json",
extension: ".log",
create_symlink: true,
symlink_name: "tail-current.log",
})
JavaScript 示例
var rotatingLogStream = require('file-stream-rotator').getStream({filename:"/tmp/test.log", frequency:"daily", verbose: false});
// 使用新流在 Express 中
app.use(express.logger({stream: rotatingLogStream, format: "default"}));
通过 file-stream-rotator
,您可以轻松管理日志文件,确保日志的持续性和可维护性。无论是小型项目还是大型系统,file-stream-rotator
都能提供强大的日志管理功能,助力您的开发和运维工作。