Node.js生态中有多个成熟的日志库,用于灵活处理应用层日志的生成、格式化和输出:
winston.createLogger配置文件和控制台输出,并支持按级别拆分日志。bunyan CLI工具用于格式化查看日志,支持日志分级和自定义字段。PM2是Node.js常用的进程管理工具,内置强大的日志管理功能,适合生产环境使用:
~/.pm2/logs目录(如app-out.log和app-error.log),支持实时查看日志(pm2 logs)。pm2 set pm2:logrotate:max_size 10M设置日志文件最大大小(如10MB),pm2 set pm2:logrotate:retain 7设置保留天数(如7天),自动清理旧日志。ecosystem.config.js指定日志文件路径(如error_file: "err.log"、out_file: "out.log"),实现更精细的日志管理。Debian系统自带的日志轮转工具,用于自动管理日志文件的大小、压缩和归档,防止日志文件占用过多磁盘空间:
sudo apt install logrotate安装,创建/etc/logrotate.d/nodejs配置文件,指定日志路径(如/var/log/nodejs/*.log)、轮转周期(daily)、保留数量(rotate 7)、压缩选项(compress)等。missingok(日志文件丢失时不报错)、notifempty(日志为空时不轮转)、create 640 root adm(创建新日志文件的权限和所有者)、postrotate(轮转后执行脚本,如重启应用以重新打开日志文件)。Debian系统默认使用systemd作为初始化系统,其日志服务systemd-journald可收集应用日志,并提供强大的查询和管理功能:
/etc/systemd/system/your-node-app.service)设置StandardOutput=syslog和StandardError=syslog,将应用日志发送到systemd日志。journalctl命令查看日志(如journalctl -u your-node-app查看特定服务的日志,journalctl --since "2025-01-01"查看指定时间范围的日志),支持实时查看(-f)、过滤(-p err查看错误日志)和导出。对于分布式系统或需要集中管理日志的场景,可使用以下工具:
winston-logstash传输),存储到Elasticsearch,通过Kibana实现日志的可视化分析(如趋势图、搜索)。winston-gelf传输)。以上工具覆盖了Node.js在Debian上的日志管理需求,从应用层日志生成到系统级日志轮转,再到集中式日志分析,可根据应用规模和需求选择合适的工具组合。