【问题标题】:Node.js logging gets an issue when log files are rolling by OS.当操作系统滚动日志文件时,Node.js 日志记录会出现问题。
【发布时间】:2017-02-11 08:44:06
【问题描述】:

我有 Node.js 应用程序,它在 Linux 系统下运行并使用 log4js 日志库。 Linux 滚动系统每天滚动日志文件。问题如下:有人知道当它以某种方式重命名时如何强制 log4js 重新创建和使用原始日志文件? 注意,Log4js 继续将日志写入重命名的文件(似乎保留了流描述符)。 另请注意,我不想使用 log4js DaylyRollingFileAppender,因为我的日志文件夹包含由各种语言(Java、Python、JavaScript、Bash...)生成的日志文件。

【问题讨论】:

    标签: node.js linux logging


    【解决方案1】:

    我假设你使用logrotate

    您可以尝试在 logrotate 配置文件中使用 'reload' 指令。 (详情见:http://www.linuxcommand.org/man_pages/logrotate8.html

    似乎 log3js 可以处理 SIGHUP。 (问题:https://github.com/nomiddlename/log4js-node/issues/343,拉取请求:https://github.com/nomiddlename/log4js-node/pull/403

    次要解决方案是将其配置为使用 'copytruncate' 指令,但它需要权衡取舍: https://serverfault.com/questions/688658/rsyslog-with-logrotate-reload-rsyslog-vs-copytruncate

    【讨论】:

    • 感谢您的回答。哦,“copytruncate”当然是解决方案,但它会影响性能,因为我的应用程序在大负载下工作并且日志增长到几 GB。因此,Linux 滚动持续了一段时间,机器负载达到了 8 - 10。因此,我的应用程序实际上是在这个时候挂起的。简而言之,我试图避免使用“copytruncate”。
    • 似乎他们现在处理 SIGHUP 信号,您可以尝试“重新加载”指令。请参阅此问题:github.com/nomiddlename/log4js-node/issues/343。并拉取请求:github.com/nomiddlename/log4js-node/pull/403。可能它还没有在 npm 中。在这种情况下,您可以(临时)直接从 git 安装。
    • 如果我的回答对您有帮助,请将其标记为“已接受”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2011-06-18
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2014-10-24
    相关资源
    最近更新 更多