Как войти с systemd?

4981
htor

Я запускаю приложение узла, используя systemd с файлом модуля. Журнал приложений можно просматривать с помощью, journalctl -u example.comно в какой-то момент журнал обрезается, стирая историю (которая мне нужна для отладки).

Как настроить ротацию логов с Systemd так, что мои журналы приложение получает хранится в example.com.log.1, и example.com.log.2т.д., так что я могу запросить историю моего приложения?

Это мой файл модуля:

ExecStart=/usr/bin/node keystone.js #Restart=always StandardOutput=syslog StandardError=syslog SyslogIdentifier=example.com User=user Group=user Environment=NODE_ENV=production  [Install] WantedBy=multi-user.target 
7
Пожалуйста, включите вашу версию systemd, а также вашу ОС и версию. Mark Stosberg 7 лет назад 1
Просмотрите `man journald.conf`, чтобы просмотреть параметры, управляющие дисковым пространством системного журнала. Если у вас все еще есть вопрос, опубликуйте содержимое вашего `/ etc / systemd / journald.conf`. Mark Stosberg 7 лет назад 1

1 ответ на вопрос

3
DougC

Увеличение хранилища

Если вы сохраняете на диск, вы можете увеличить объем используемого пространства, изменив SystemMaxUseи / или SystemKeepFree. Наличие большего пространства позволит хранить больше записей.

По умолчанию максимальный предел использования ( SystemMaxUse) составляет 10% от файловой системы, а минимальное значение свободного пространства ( SystemKeepFree) составляет 15% - хотя они оба ограничены 4G.

Вращение журнала

Журналы должны вращаться автоматически, когда они достигают SystemMaxFileSizeзначения, а количество журналов контролируется SystemMaxFiles. Если вы предпочитаете ротацию, основанную на времени, вы можете установить MaxFileSecмаксимальное значение времени, в котором записи хранятся в одном журнале.

Примечание к месту хранения / типу

С journald вы можете хранить записи журнала либо в памяти ( Storage=volatile), либо на диске ( Storage=persistent). Вышеприведенное предполагает, что вы храните журналы на диске - если это не так, «System» необходимо будет заменить на «Runtime» в указанных выше переменных.

Более подробная информация доступна в man journald.conf.

Альтернатива - передача записей журнала

Если вы уже знакомы с традиционным демоном SYSLOG, вы можете передать события журнала, установив ForwardToSyslogопцию (которая пересылает сообщения немедленно), или чтобы демон syslog вел себя как клиент журнала и сам получал журналы.