SyslogIdentifier= и разметка записей журнала
Задаёт имя, которое подставляется в поле идентификатора записей журнала. По умолчанию это имя запускаемой программы.
Что делает
Полезно там, где программа запускается через обёртку или интерпретатор: без параметра в журнале будет видно sh или python3, а не имя вашей службы. Фильтровать такой журнал неудобно.
Рядом стоят два параметра для управления объёмом. LogLevelMax= отбрасывает записи ниже заданного уровня, LogRateLimitBurst= ограничивает частоту. Оба спасают, когда служба заливает журнал.
Где ставится. В секции [Service].
Значения
| Значение | Что происходит |
|---|---|
SyslogIdentifier=myapp | записи будут помечены именем myapp. |
LogLevelMax=warning | отбрасывать записи ниже уровня предупреждения. |
LogExtraFields=SERVICE_ENV=prod | добавить своё поле в каждую запись. |
Пример
Служба на интерпретаторе с понятным именем в журнале.
[Service]
SyslogIdentifier=myapp
LogLevelMax=info
LogExtraFields=SERVICE_ENV=prod
ExecStart=/usr/bin/python3 /opt/myapp/main.py
Поиск по добавленному полю: journalctl SERVICE_ENV=prod. Это удобнее, чем разбирать текст сообщений.
Типичные ошибки
Без параметра в журнале видно имя интерпретатора, а не службы — фильтровать неудобно.
LogLevelMax= отбрасывает записи безвозвратно: при разборе аварии их уже не вернуть.
Ограничение частоты записей может скрыть поток ошибок: в журнале появится строка о подавленных сообщениях.
Связанные ошибки
- status=1/FAILURE в systemdКод 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
Рядом стоящие параметры
Источники
- systemd.exec(5)
- journalctl(1)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)