У меня есть один конкретный сервис, который регистрирует редкую, но важную информацию. Я настроил это несколько месяцев назад, и сегодня я бегу journalctl -n 50 --unit=my-service
только, чтобы найти, что нет никаких записей.
Я вполне доволен таким поведением для большинства юнитов - мне либо нужно что-то, что произошло сразу (или, самое большее, несколько дней назад), и меня не волнуют месячные записи.
Тем не менее, есть ли способ сказать, journald
чтобы иметь независимую политику хранения и хранения для записей отдельного конкретного блока? Я хочу сохранить эти конкретные журналы, скажем, на 5 лет - независимо от того, какого размера это займет. Журналы других подразделений не должны быть затронуты этим и сохранять свое существующее поведение.
Я в некотором роде потерял понимание journald.conf(5)
и не могу понять, когда конфигурация для каждого устройства вообще возможна. Если это так - был бы признателен за краткий конкретный пример - какой файл я должен редактировать / создавать, а что писать. Или, если вы точно знаете, что это, безусловно, невозможно - это также будет хорошим ответом.
ПРИМЕЧАНИЕ: мой конкретный случай касается хоста Arch Linux, но я думаю, это не должно иметь большого значения.
источник
Ответы:
Кажется, мне, скорее всего, не повезло с журналом. Если я не придумаю способ создания независимого журнала «длительного хранения» (как в настоящее время существуют разные журналы для каждого пользователя), но я не уверен, что это жизнеспособный и вменяемый подход. Я предполагаю, что настройка syslogd (и logrotate) будет проще.
Эта функция отсутствовала в конце 2014 года , как подтвердил сам Леннарт.
И кажется, что это еще не здесь. По крайней мере, строка «journald: разрешить время удержания для каждого приоритета и для услуги при ротации / вакуумировании» все еще находится в файле TODO (ссылка на ревизию от 2016-07-11).
источник
Это удивительно просто создать файл журнала. По умолчанию все записи в journald также идут в syslog, и это значение по умолчанию должно быть на месте. Rsyslog.conf управляет обработкой записей, передаваемых в системный журнал. Кроме того, по
SyslogFacility
умолчанию,daemon
поэтому записи журнала для любой службы обычно попадают вdaemon.log
файл в/var/log
.В вашем сервисном файле добавьте в раздел [service]
(число может быть от 0 до 7) https://www.freedesktop.org/software/systemd/man/systemd.exec.html
Измените /etc/rsyslog.conf (найдите существующие строки для изменения) так, чтобы local2 был зарегистрирован в конкретном файле (первая строка) и в идеале не зарегистрирован в syslog, добавив,
local2.none
как показано (он уже есть в журнале).[править] вам также нужно изменить поймать все
Конечно, фактическое удержание должно быть сделано logrotate.
НТН
источник