Syslog를 syslog와 사용자 정의 로그 파일 모두에 기록하도록 하기

Syslog를 syslog와 사용자 정의 로그 파일 모두에 기록하도록 하기

syslog(Raspbian rsyslog swVersion="8.1901.0")에서,

/var/log/syslog특정 문자열이 포함된 시스템 메시지를 (기본값) 및 사용자 정의 별도 로그 파일(예: )과 일치/필터링하려고 합니다 /var/log/nut.log.

다음 필터 라인을 배치하여 이를 달성할 수 있었습니다 /etc/rsyslog.conf.

# NUT logging: Include USB msgs since montoring UPS via only USB
:msg,contains,"USB" /var/log/nut.log
& stop
:msg,contains,"nut-" /var/log/nut.log
& stop

& stop일치가 이루어지면 필터를 중지하는 데 필요합니다 . 나는 이것을 전용 파일에 저장하는 것이 선호되는 방법이라고 생각합니다. 즉:/etc/rsyslog.d/0-nut.conf

그런데 그렇게 하면 필터가 에 대한 로깅을 중지하고 ... /var/log/syslog에만 로깅합니다 /var/log/nut.log.

이를 수행하는 다른 방법이 있습니까?

고마워!

답변1

$IncludeConfigor include()지시문은 rsyslog.conf에 메시지를 쓰는 규칙을 포함하여 대부분의 표준 규칙 앞에 나타납니다 /var/log/syslog. 이 파일의 다른 규칙 뒤에 규칙을 추가하면 너트 메시지 syslog도 일치되어 에 기록되기 전에 이미 기록되었을 것입니다 nut.log.

대신 규칙을 별도의 파일에 넣으면 메시지가 에 기록되고 nut.logstop이후 규칙을 건너뜁니다. 대답은 사용하지 않는 것입니다 stop.

메시지에 "USB"와 "nut-"이 모두 포함되어 에 두 번 기록되는 것이 문제인 경우에는 nut.log보다 정교한 구문을 사용해야 합니다.

레거시 구문은 다음으로 대체되었습니다.라이너스크립트옛날에. 이는 다음과 같은 필터를 작성할 수 있음을 의미합니다.

if ($msg contains "USB" or $msg contains "nut-") then {
   action(type="omfile" file="/var/log/nut.log")
}

이로 인해 메시지의 추가 처리를 방해할 필요는 없습니다.

관련 정보