永远是截断日志

时间:2016-04-08 03:12:20

标签: node.js logging debian syslog forever

我已经使用了很长时间但是最近它开始表现得有些奇怪:除了日志之外一切都很好。

我曾经跑过forever start /path/to/app.js,一切都很好。即使是巨大的原木(1-2演出)。

但我目前有一个应用程序,一个非常繁忙的网络应用程序,日志每3-4小时被截断。尺寸不是那么大,实际上是80-120兆。

在意识到这一点后,我决定尝试(虽然不成功)从选项开始永远:forever --append -o /path/to/out.log -e /path/to/error.log start /path/to/app.js但问题仍然存在。

我真的不知道该怎么做。 有什么想法吗?? 谢谢!

版本:

  • node v0.12.7
  • npm 2.11.3
  • forever v0.15.1
  • 3.16.0-4-amd64#1 SMP Debian 3.16.7-ckt11-1 + deb8u6(2015-11-09)x86_64 GNU / Linux

UPDATE1:

  • BTW:我有足够的硬盘可用内存

UPDATE2:

我找到了一个相关的问题(https://github.com/foreverjs/forever/issues/106#issuecomment-116933382)并使用以下命令进行测试:forever -a -l >(logger -t fileteTrackchile) start /path/to/app.js到目前为止一直很好,但它会将日志信息存储在/var/log/user.log,{{1} }和/var/log/syslog。它是相同的信息,因此最好只保存一次。

我会让它运行几天,看它是否有效。

UPDATE3(FINAL):

这个问题与永远无关,也没有和温斯顿有关。我没有意识到文件太大,以至于日志查看器只显示了它的一部分。令人困惑的部分是第一行(过去)被查看器(OSX控制台)截断,导致我认为文件本身被截断了。

2 个答案:

答案 0 :(得分:1)

关于第一种方法,意外的日志截断通常是由日志轮换引起的。但是,您没有提及旋转日志。

您的第二种方法是使用syslog客户端将日志发送到logger守护程序。

由于syslog配置,您的日志记录最终会在三个日志中结束。

试试这个解决方案。创建名为/etc/rsyslog.d/10-fileteTrackchile.conf的文件。

在文件中,添加以下行:

$template JustMsg,"%msg:2:10000%\n"
if $programname == 'fileteTrackchile' then /var/log/fileteTrackchile.log;JustMsg
if $programname == 'fileteTrackchile' then stop

然后:

service rsyslog stop
service rsyslog start

因为文件名以10开头,所以它会在其他配置之前运行。

逻辑指示将应用程序的日志记录记录到未修改的特定文件,然后停止rsyslog进一步处理,因此日志记录不会在您提到的其他三个文件中结束。

您可能还希望使用以下内容创建/etc/logrotate.d/fileteTrackchile

/var/log/fileteTrackchile.log
{
        rotate 7
        daily
        missingok
        notifempty
        compress
        sharedscripts
        postrotate
                service rsyslog reload >/dev/null 2>&1 || true
        endscript
}

有关这些日志轮换选项的详细信息,请参阅man logrotate

答案 1 :(得分:0)

这个问题与永远无关,也没有和温斯顿有关。我没有意识到文件太大,以至于日志查看器只显示了它的一部分。令人困惑的部分是第一行(过去)被查看器(OSX控制台)截断,导致我认为文件本身被截断了。