저널링으로 단위 별 로그 스토리지 정책을 구성하는 방법은 무엇입니까? -n 50 –unit=my-service은

드물지만 중요한 정보를 기록하는 하나의 특정 서비스가 있습니다. 몇 달 전에 설정했으며 오늘 journalctl -n 50 --unit=my-service은 항목이 없음을 찾기 위해 실행했습니다 .

나는 대부분의 부대에서이 행동에 완벽하게 만족합니다. 즉시 (또는 며칠 전까지) 일어난 일이 필요하며 몇 개월 전의 기록은 신경 쓰지 않습니다.

그러나 journald하나의 특정 장치 레코드에 대해 독립적 인 저장 및 보존 정책을 갖도록 지시 할 수있는 방법이 있습니까? 크기에 관계없이 5 년 동안 특정 로그를 유지하고 싶습니다. 다른 유닛의 로그는 이것에 영향을받지 않아야하며 기존 동작을 유지해야합니다.

나는 이해를 잃어 버렸고 journald.conf(5)단위 당 구성이 가능할 때마다 파악할 수 없습니다. 그렇다면-간단한 구체적인 예제를 고맙게 생각합니다-어떤 파일을 편집 / 만들어야하고 무엇을 써야합니까? 또는 확실하지 않다는 것을 확실히 알고 있다면 좋은 답변이 될 것입니다.

참고 : 나의 특별한 경우는 아치 리눅스 호스트와 관련이 있지만, 이것이 중요하지 않다고 생각합니다.



답변

내가 일하는 것은 운이 좋지 않은 것 같습니다. 독립적 인 “장기 저장”저널을 생성하는 방법 (현재 사용자마다 다른 저널이 존재하는 것처럼)을 생성하지 않는 한, 그것이 실행 가능하고 제정신 접근법인지 확실하지 않습니다. syslogd (및 logrotate)를 설정하는 것이 더 쉬울 것 같습니다.

이 기능 Lennart가 확인한 2014 년 후반 에는 없었습니다 .

그리고 아직 여기에없는 것 같습니다. 최소한 “journald : 회전 / 진공시 우선 순위 및 서비스 별 유지 시간 허용”행 이 여전히 TODO 파일에 있습니다 (2016-07-11의 개정 링크).


답변

로그 파일을 생성하는 것은 매우 간단합니다. 기본적으로 저널링에 대한 모든 로깅은 syslog로 이동하며이 기본값이 있어야합니다. rsyslog.conf는 syslog에 전달 된 항목이 처리되는 방식을 제어합니다. 또한 SyslogFacility기본값 daemon은 모든 서비스의 로그 항목이 일반적으로의 daemon.log파일에있게 /var/log됩니다.

서비스 파일에서 [service] 섹션에 추가하십시오.

SyslogFacility=local2

(숫자는 0과 7 사이 일 수 있음) https://www.freedesktop.org/software/systemd/man/systemd.exec.html

local2가 특정 파일 (첫 번째 줄)에 기록되고 이상적 local2.none으로 표시된대로 추가하여 syslog에 기록되지 않도록 /etc/rsyslog.conf (기존 줄 찾기)를 수정하십시오 ( 이미 저널에 있음).

local2.*                        /var/log/your-service-name.log
*.*;auth,authpriv.none,local2.none          -/var/log/syslog

[편집] 당신은 또한 모든 캐치를 수정해야합니다

*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none,local2.none      -/var/log/messages

물론 실제 보존은 logrotate에 의해 수행되어야합니다.

HTH


답변