문제를 해결하는 더 우아한 방법이 있다고 생각합니다. stdout / stderr을 식별자를 사용하여 syslog로 보내고 syslog 관리자에게 출력을 프로그램 이름으로 나누도록 지시하십시오.
시스템 서비스 단위 파일에서 다음 특성을 사용하십시오.
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=<your program identifier> # without any quote
그런 다음 배포에서 rsyslog를 사용하여 syslog를 관리한다고 가정 /etc/rsyslog.d/<new_file>.conf
하면 다음 내용으로 파일을 만듭니다 .
if $programname == '<your program identifier>' then /path/to/log/file.log
& stop
이제 syslog에서 로그 파일을 쓸 수있게 만드십시오 :
# ls -alth /var/log/syslog
-rw-r----- 1 syslog adm 439K Mar 5 19:35 /var/log/syslog
# chown syslog:adm /path/to/log/file.log
rsyslog ( sudo systemctl restart rsyslog
)를 다시 시작 하고 즐기십시오! 프로그램 stdout / stderr는 여전히 journalctl ( sudo journalctl -u <your program identifier>
)을 통해 사용할 수 있지만 선택한 파일에서도 사용할 수 있습니다.
archive.org를 통한 출처
journalctl -u
여전히 작동하지만 지정된 파일로 아무것도 전송되지 않습니다.