rsyslog: 사용자 정의 템플릿을 사용하여 다른 파일로 로그 보내기

rsyslog: 사용자 정의 템플릿을 사용하여 다른 파일로 로그 보내기

그래서 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문제가 해결되었습니다.

관련 정보