2016-04-08 2 views
0

Я использую forever в течение длительного времени, но в последнее время он начал вести себя немного странно: все в порядке, за исключением журналов.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, но проблема не устранена.

Я действительно не знаю, что делать. Любые мысли ??? Спасибо!

Версии:

  • узел v0.12.7
  • НПМ 2.11.3
  • навсегда 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:

я нашел связанный Issue (https://github.com/foreverjs/forever/issues/106#issuecomment-116933382) и на букву тестирования с помощью следующей команды: forever -a -l >(logger -t fileteTrackchile) start /path/to/app.js До сих пор так хорошо, но будет хранить информацию журнала в /var/log/user.log, /var/log/syslog и /var/log/messages. Это одна и та же информация, поэтому было бы лучше сохранить ее только один раз.

Я оставлю его работать в течение нескольких дней и посмотреть, работает оно или нет.

Update3 (FINAL):

Проблема не имеет ничего общего с вечно, и Winston. Я не понимал, что файлы были настолько большими, что просмотрщик журналов только показывал его часть. Запутанная часть состоит в том, что первая строка (прошлое) была усечена зрителем (OSX Console), что заставило меня думать, что сам файл был усечен.

ответ

0

Проблема не имеет ничего общего с вечно, ни уинстон. Я не понимал, что файлы были настолько большими, что просмотрщик журналов только показывал его часть. Запутанная часть состоит в том, что первая строка (прошлое) была усечена зрителем (OSX Console), что заставило меня думать, что сам файл был усечен.

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 для деталей этих вариантов вращения журнала.

+0

Большое спасибо, это сработало! но у меня все еще есть две большие проблемы; 1) если я перезапущу приложение, мне нужно перезапустить rsyslog, а для последнего мне нужны права root, что делает все более сложным с оперативной точки зрения, и 2) я вообще не использовал logrotate, на самом деле я использовал местоположение по умолчанию для logs /home/someUser/.forever, чтобы сохранить их в первую очередь. Это было идеальным решением для меня, пока эта проблема усечения не возникла. – nico

+0

Никогда не нужно перезапускать rsyslog. Вам не нужно использовать logrotate для управления вращением журнала. Вы можете повернуть свои журналы, как вам нравится. –