rsyslogd v5.8.10을 포함하여 CentOS6.5를 사용하고 있습니다.
내 서버에는 20개의 프로세스 프로그램이 있습니다. rsyslogd를 사용하여 로그를 수신하고 메시지의 프로세스 프로그램 ID를 기반으로 다른 로그 파일에 저장하고 싶어서 다음 형식으로 로그를 보내기로 결정했습니다. {PRC} 예시: {PRC server1_process_a10} 이 메시지 내용이에요
메시지가 필터/규칙(regex 사용?)과 일치하는지 확인한 다음 로그 파일 이름에 process_name,log_level을 사용하는 방법을 알고 싶습니다.
예: 로그 메시지는 다음과 같습니다(로그 수준 디버그): {PRC server1_process_a10}this_is_message_text 이 메시지를 /var/log/myprogram-server1_process_a10_debug.log에 저장하려고 합니다.
답변1
마침내 문제를 해결했습니다.
첫 번째 단계는 다음 프로그램을 통해 로그 텍스트를 보내는 것입니다.
sender_host sender_program 로그_텍스트
두 번째로 /etc/rsyslog.conf에 다음 설정을 추가합니다.
$template tpl,"/var/log/procs_%프로그램 이름:R,ERE,0,ZERO:(PRCS_[A-Za-z0-9]+)--end%%syslogseverity-text%%$연도%-%$월%-%$일%.log"
local0.*?tpl
그러면 모든 것이 잘 될 것입니다.