원격 rsyslog 서버에서 중복된 메시지를 받았습니다. 메일 서버에서 clamav 로그 캡처를 구성했는데도 여전히 syslog에 로그가 표시됩니다.
# Configuration for Mail ClamAV logs in rsyslog.d
if ($fromhost contains "mail") and ($programname contains "clam") then {
action(type="omfile" file="/var/log/mail-clam.log")
}
메일 clam.log:
Jan 3 11:32:07 mail2 freshclam[265]: Received signal: wake up
Jan 3 11:32:07 mail2 freshclam[265]: ClamAV update process started at Thu Jan 3 11:32:07 2019
Jan 3 11:32:07 mail2 freshclam[265]: main.cld is up to date (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr)
Jan 3 11:32:07 mail2 freshclam[265]: daily.cld is up to date (version: 25264, sigs: 2197013, f-level: 63, builder: raynman)
Jan 3 11:32:07 mail2 freshclam[265]: bytecode.cld is up to date (version: 328, sigs: 94, f-level: 63, builder: neo)
시스템 로그:
Jan 3 11:32:07 mail2 freshclam[265]: Received signal: wake up
Jan 3 11:32:07 mail2 freshclam[265]: ClamAV update process started at Thu Jan 3 11:32:07 2019
Jan 3 11:32:07 mail2 freshclam[265]: main.cld is up to date (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr)
Jan 3 11:32:07 mail2 freshclam[265]: daily.cld is up to date (version: 25264, sigs: 2197013, f-level: 63, builder: raynman)
Jan 3 11:32:07 mail2 freshclam[265]: bytecode.cld is up to date (version: 328, sigs: 94, f-level: 63, builder: neo)
로그를 제외하기 위해 rsyslog.conf에 다음 줄이 있습니다.
*.*;auth,authpriv,mail.none -/var/log/syslog
$programname
시스템 로그에서 제외하는 방법을 모르겠습니다 . 이 문제를 해결하는 올바른 방법은 무엇입니까?
*.*;auth,authpriv,mail.none,if ($programname contains "clam") then {} -/var/log/syslog
아니면 if 문을 어떻게든 참조할 수 있나요?
답변1
구성 파일의 규칙은 rsyslog
위에서 아래로 평가됩니다. 따라서 필요한 처리 후 로그 메시지를 제거하는 것만으로 선택적 로깅을 달성할 수 있습니다. "중지" 작업은 로그 메시지를 삭제하는 데 사용됩니다.
상황에 따라 rsyslog.conf 파일을 다음과 같이 수정합니다.
if ($fromhost contains "mail") and ($programname contains "clam") then {
action(type="omfile" file="/var/log/mail-clam.log")
stop
}
...
*.*;auth,authpriv,mail.none -/var/log/syslog
이 구성을 사용하면 표현식과 일치하는 모든 메시지가 /var/log/mail-clam.log에 기록된 후 삭제됩니다. 이렇게 하면 해당 메시지가 추가로 처리되어 /var/log/syslog에 기록되는 것을 방지할 수 있습니다.