![모든 로그 경로에 다시 쓰기를 삽입하는 대신 메시지의 일부를 전체적으로 다시 쓰는 방법이 있습니까?](https://linux55.com/image/96768/%EB%AA%A8%EB%93%A0%20%EB%A1%9C%EA%B7%B8%20%EA%B2%BD%EB%A1%9C%EC%97%90%20%EB%8B%A4%EC%8B%9C%20%EC%93%B0%EA%B8%B0%EB%A5%BC%20%EC%82%BD%EC%9E%85%ED%95%98%EB%8A%94%20%EB%8C%80%EC%8B%A0%20%EB%A9%94%EC%8B%9C%EC%A7%80%EC%9D%98%20%EC%9D%BC%EB%B6%80%EB%A5%BC%20%EC%A0%84%EC%B2%B4%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EB%8B%A4%EC%8B%9C%20%EC%93%B0%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
메시지에서 \n 이스케이프 처리해야 합니다. " "을(를) 사용하여 이 작업을 수행할 수 있지만 rewrite
문제는 로그 경로가 많고 rewrite
모든 로그 경로에 " "을 지정하고 싶지 않다는 것입니다. 재정의를 설정하는 전역 방법이 있습니까?
# Escape the new line characters
rewrite r_escape_new_line {subst("\n", "#012", value("MSG"), flags("global"));};
log { source(s_system); filter(f_critical); rewrite(r_escape_new_line); destination(d_critical); };
log { source(s_system); filter(f_error); rewrite(r_escape_new_line); destination(d_error); };
log { source(s_system); filter(f_warning); rewrite(r_escape_new_line); destination(d_warning); };
답변1
소스 정의에 flags(no-multi-line) 옵션을 추가해 보세요. 예를 들면 다음과 같습니다.
source s_src {
system(flags(no-multi-line));
internal();
};
그래도 작동하지 않으면 채널을 사용하여 재정의를 소스 정의에 포함할 수 있습니다. 이것syslog-ng 관리자 안내서비슷한 예가 있습니다. 파서를 재정의로 바꾸면 됩니다.
HTH.