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/205 sharedscripts: "sharedscripts 意味着 postrotate 脚本只会运行一次(在旧日志被压缩之后),而不是为每个轮换的日志运行一次。" man logrotate @JCM 但是,如何配置永远使用 Winston 中的这一新功能?我是否必须永远从命令行使用切换到编程使用? @sheldonh idk,你可能应该在永远的项目中打开一个问题来问这个问题。 有了这个配置,我的forever.log仍然无限增长,logrotate只复制文件,不会触及不断增长的原始日志文件......,所以这个解决方案不能解决完全提问。尤其是这部分“我的日志快要失控了”

以上是关于NodeJS/Forever 归档日志的主要内容,如果未能解决你的问题,请参考以下文章

pgsql归档日志作用

使用Rman备份的归档日志恢复数据库时,需要先还原归档日志吗

如何查看归档日志路径

怎么分析 oracle 归档日志

oracleRAC--归档日志的开启方法

如何删除oracle的归档日志