그래서 systemd
로그를 에 보내고 rsyslog
로그를 에 쓰고 싶습니다 /var/log/app.log
.
자체 로그 형식을 가진 Java 애플리케이션이므로 타임스탬프나 그 어떤 것도 포함하고 싶지 않고 메시지 자체만 포함하고 싶습니다.
내가 지금까지 가지고 있는 것은 이것입니다:
[Unit]
Description=My App
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp
ExecStart=/usr/bin/java -jar /opt/app.jar
Restart=on-failure
[Install]
WantedBy=multi-user.target
그런 다음 파일이 있습니다 /etc/rsyslog.d/myapp.conf
.
template(name="clean" type="string" string="%msg:2:$:drop-last-lf%\n")
if $programname == 'myapp' then action(type="omfile" file="/var/log/app.log" template="clean")
& stop
제가 이해한 것이 맞다면 프로그램 이름이 이면 템플릿을 myapp
사용 하고 로그를 저장한 후 중지해야 합니다.clean
/var/log/app.log
로그를 /var/log/syslog
.
이러한 로그가 시스템 로그에도 저장되지 않도록 하려면 어떻게 해야 합니까?
답변1
문제는 기본 프로필이 이라고 해서 50-defaults.conf
먼저 처리된다는 점인데...
이는 로그가 기본 구성에 따라 전송된 /var/log/syslog
다음 내 구성 파일을 통과하여 중지되지만 뒤에 아무것도 없기 때문에 중요하지 않음을 의미합니다.
이름을 바꾸면 10-myapp.conf
문제가 해결되었습니다.