syslog-ng의 좋은 기능을 찾았습니다.기록계사용자 프로세스의 내용을 기록하기 위해 로깅 사용자 이름을 얻습니다. 이 주변:
peterh$ echo test log message|logger
그러면 나는 이것을 얻습니다 /var/log/messages
:
Oct 12 16:38:29 thehost peterh: test log message
여기서 "thehost"는 서버의 호스트 이름이고 "peterh"는 아래에 제공한 명령에 대한 사용자 이름입니다.
이제 내가 원하는 것은:syslog-ng를 사용하여 특정 사용자의 로그 항목을 특정 파일로 수집하고 싶습니다..
전체 로그 항목을 필터링하는 syslog-ng의 기능은 끔찍해 보이지만 때로는 작동하지 않습니다.
# Doesn't work - it doesn't do anything
filter f_peterh { match('peterh'); };
destination d_filter { file("/var/log/peterh.log"); };
log { source(s_src); filter(f_peterh); destination(d_peterh); };
웹의 여러 곳에서 볼 수 있는 문서에는 로그 메시지의 바이너리 형식부터 관련 RFC에 이르기까지 모든 내용이 설명되어 있습니다.시스템 로그에서 사용자 이름을 필터링하는 방법.
어떻게 하나요?
답변1
이것이 여전히 당신에게 효과가 있는지는 모르겠지만 사용자 이름으로 필터링하려는 다른 사람을 위해 이것은 내가 할 수 있었던 방법에 대한 참조입니다.
다음 필터를 만들었습니다.
filter sampleUserFilter {
facility (user) and match ("myUser" value ("PROGRAM"));
};
이를 통해 (로거를 사용하여) 특정 사용자의 메시지를 별도의 파일로 라우팅할 수 있습니다.