systemd 서비스를 실행할 때 syslog가 소유한 오류 로그 파일을 만드는 방법은 무엇입니까?

systemd 서비스를 실행할 때 syslog가 소유한 오류 로그 파일을 만드는 방법은 무엇입니까?

우분투 16.04에서 Go 바이너리를 서비스로 실행하고 있는데 syslog가 소유한 로그 파일을 생성할 수 없습니다. 다음과 같이 myapp.service에 대한 서비스를 만들었습니다.

[Unit]
Description=myapp

[Service]
Type=simple
Restart=always
RestartSec=30
WorkingDirectory= /home/go/src/myapp
ExecStart=/home/go/src/myapp/myapp  

# myapp.log owned by syslog
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/log/myapp
ExecStartPre=/bin/chown syslog:adm /var/log/myapp
ExecStartPre=/bin/chmod 755 /var/log/myapp
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp                           

[Install]
WantedBy=multi-user.target

이제 /var/log/myapp 안에 폴더가 생성됩니다. 그러나 myapp 폴더에는 myapp.log 파일이 생성되지 않습니다. 다음 명령을 사용하여 이러한 로그를 확인할 수 있습니다.

sudo journalctl -f -u myapp

그런 다음 rsyslog를 사용하여 시스템 로그를 관리하고 /etc/rsyslog.d/myapp.conf에 다음 내용이 포함된 파일을 생성합니다.

if $programname == 'myapp' then /var/log/myapp/myapp.log
& stop

그 후 서비스를 다시 시작했습니다. 나를 위한 로그 파일이 생성됩니다. 그런데 여기에는 성공 및 실패 로그가 포함되어 있는데 실패 로그만 생성하고 싶은데 어떻게 가능합니까?

관련 정보