드물지만 중요한 정보를 기록해 주는 특별한 서비스가 있어요. 몇 달 전에 설정하고 오늘 실행했는데 journalctl -n 50 --unit=my-service
항목이 없었습니다.
나는 대부분의 장치에서 이러한 동작에 매우 만족합니다. 즉각적으로(또는 최대 며칠 전에) 발생한 일이 필요하고 몇 달 전의 기록에는 관심이 없습니다.
journald
그러나 단일 특정 단위의 기록에 대해 독립적인 저장 및 보존 정책이 있음을 알 수 있는 방법이 있습니까 ? 나는 이러한 특정 로그를 5년 동안 보관하고 싶습니다. 다른 유닛의 로그는 이에 영향을 받지 않고 기존 동작을 유지해야 합니다.
이해가 조금 부족해서 journald.conf(5)
단위별 구성이 가능한 시기를 알 수 없습니다. 그렇다면 어떤 파일을 편집/생성해야 하고 무엇을 작성해야 하는지에 대한 짧고 구체적인 예를 들어주시면 감사하겠습니다. 또는 확실히 실현 가능하지 않다고 확신하는 경우에도 좋은 대답입니다.
노트:내 구체적인 사례에는 Arch Linux 호스트가 포함되어 있지만 그것은 중요하지 않을 것 같습니다.
답변1
일기 쓰기에 운이 좋지 않은 것 같습니다. 독립적인 "장기 저장소" 로그를 생성하는 방법을 찾지 않는 한(예: 현재 사용자별 로그가 서로 다름) 이것이 실현 가능하고 합리적인 접근 방식인지는 확실하지 않습니다. 나는 syslogd(및 logrotate)를 설정하는 것이 더 쉬울 것이라고 생각했습니다.
특징2014년 말에는 나타나지 않았음, Lennart 자신이 확인했습니다.
그리고 아직은 올 것 같지도 않아요. 최소한 "로그: 순환/청소 시 우선순위별, 서비스별 보존 시간 허용"이라는 줄은아직 TODO 파일에 있음(2016년 7월 11일 개정판 링크)
답변2
로그 파일을 생성하는 것은 매우 간단합니다. 기본적으로 로그에 대한 모든 로깅은 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가 특정 파일(첫 번째 줄)에 기록되고 추가를 통해 syslog에 기록되지 않도록 /etc/rsyslog.conf를 수정합니다(수정할 기존 줄 찾기) local2.none
(이미 로그에 있음).
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를 통해서 이루어져야 합니다.
화타이