我已经使用了很长时间但是最近它开始表现得有些奇怪:除了日志之外一切都很好。
我曾经跑过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
但问题仍然存在。
我真的不知道该怎么做。 有什么想法吗?? 谢谢!
版本:
UPDATE1:
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控制台)截断,导致我认为文件本身被截断了。
答案 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控制台)截断,导致我认为文件本身被截断了。