NodeJS/Forever 归档日志
Posted
技术标签:
【中文标题】NodeJS/Forever 归档日志【英文标题】:NodeJS/Forever archive logs 【发布时间】:2013-02-20 08:04:05 【问题描述】:我正在使用forever 运行我的节点应用程序。当我永远开始时,我会指定在哪里写入日志。我还指定附加到日志。这里的问题是我的日志会在几个月内失去控制。
有没有办法按时间间隔存档/滚动日志,即每天将日志文件中的内容滚动/存档到另一个文件(即 server-2013-3-5.log)。这样我就可以根据需要删除/移除旧的日志文件。
我刚刚开始考虑将 Winston 用于我的记录器,但我还没有发现任何有用的东西。
有什么想法吗?
【问题讨论】:
你最后是怎么解决的? 【参考方案1】:forever 本身不支持日志轮换,对于 Winston,日志轮换仍然是 pending feature request。
您可以使用logrotate
,它包含在大多数 Linux 发行版中,用于轮换系统日志文件,以及被 Apache 等其他软件使用。
将文件添加到/etc/logrotate.d/
/path/to/server.log
daily # how often to rotate
rotate 10 # max num of log files to keep
missingok # don't panic if the log file doesn't exist
notifempty # ignore empty files
compress # compress rotated log file with gzip
sharedscripts # postrotate script (if any) will be run only once at the end, not once for each rotated log
copytruncate # needed for forever to work properly
dateext # adds date to filename
dateformat %Y-%m-%d.
见more logrotate
examples。
【讨论】:
现在可以使用 Winston 进行日志轮换:github.com/flatiron/winston/pull/205sharedscripts
: "sharedscripts 意味着 postrotate 脚本只会运行一次(在旧日志被压缩之后),而不是为每个轮换的日志运行一次。" man logrotate
@JCM 但是,如何配置永远使用 Winston 中的这一新功能?我是否必须永远从命令行使用切换到编程使用?
@sheldonh idk,你可能应该在永远的项目中打开一个问题来问这个问题。
有了这个配置,我的forever.log仍然无限增长,logrotate只复制文件,不会触及不断增长的原始日志文件......,所以这个解决方案不能解决完全提问。尤其是这部分“我的日志快要失控了”以上是关于NodeJS/Forever 归档日志的主要内容,如果未能解决你的问题,请参考以下文章