dmesglog에 대한 rsyslog.conf 규칙이 작동하지 않습니다.

dmesglog에 대한 rsyslog.conf 규칙이 작동하지 않습니다.


우리 는 Wi-Fi 칩을 갖춘 Beaglbone Black 기반 맞춤형 보드를 가지고 있습니다.rsyslog.conf

# Redirect all kernel messages including dmesg to /var/log/dmesglog
kern.*                         :omfile:$dmesg_log_rotation

dmesglog는 다음으로 시작하는 Wi-Fi 로그로 가득 차 있습니다. mlan0그래서 규칙을 다음과 같이 변경했습니다.

# Redirect all kernel messages including dmesg to /var/log/dmesglog
kern.*, !contains, "mlan0" :omfile:$dmesg_log_rotation

그러나 해당 로그는 여전히 dmesglog에 계속해서 넘쳐납니다.

누군가 그 로그에 어떤 문제가 있는지 제안해 줄 수 있나요?
규칙에 대한 다른 제안이 있습니까? 어떤 포인터?

편집하다: 몇 가지 조사
끝에 . 그리고 그 검사는 오류를 지적했습니다. 어떻게든 규칙을 바로잡으려고 노력 중이에요.rsyslogd -N1rsyslog.conf

편집2
규칙을 다음과 같이 변경했지만 이제 dmesglog에 아무것도 표시되지 않습니다.

# Redirect all kernel messages including dmesg to /var/log/dmesglog
if ( 'kern.*' contains "mlan0" ) then{ action( type="omfile" file="*" ) } else { action( type="omfile" file="$dmesg_log_rotation" )}

답변1

이 시도:

# Redirect all kernel messages including dmesg to /var/log/dmesglog
:msg, contains, "mlan0" ~
kern.*                         :omfile:$dmesg_log_rotation

에 따르면rsyslogd 문서먼저 선택한 메시지를 삭제해야 합니다.


필터링된 메시지를 별도의 파일에 저장하려면 다음과 같이 작성할 수 있습니다.

# Redirect all "mlan0" to /var/log/mlan.log
:msg, contains, "mlan0" :omfile:/var/log/mlan.log
:msg, contains, "mlan0" ~
# Redirect all kernel messages including dmesg to /var/log/dmesglog
kern.*                         :omfile:$dmesg_log_rotation

안타깝게도 rsyslog는 커널 모듈 이름을 기준으로 한 필터링을 정확하게 지원하지 않지만 다른 속성을 시도해 볼 수 있습니다(메시지는 그 중 하나일 뿐임) 규칙을 사용하면 필터 규칙을 보다 정확하게 지정할 수 있습니다.시작하다", "는 같다" 또는 "정규식". 속성 및 규칙의 전체 목록은 다음과 같습니다.여기(아래를 보세요 "사용 가능한 속성".
따라서 다음과 같이 시도해야 합니다.

:programname, startswith, "mlan" :omfile:/var/log/mlan.log

또는:

:syslogtag, regex, "^mlan[0-9]" :omfile:/var/log/mlan.log

어떤 속성에 커널 모드가 포함되어 있는지 모르겠습니다. 어쨌든 항상 다음을 기준으로 필터링할 수 있습니다.메시지~와 함께정규식.

:msg, regex, "^write-regex-matching-your-module-log-output" :omfile:/var/log/mlan.log

관련 정보