rsyslog를 통해 로그 파일을 소개하며 구성은 다음과 같습니다.
root@rhel:/etc/rsyslog.d# head mail_prod_logs.conf
if $fromhost-ip=="10.10.10.10" and $programname=="AMP_Logs" then -/var/log/mail_logs/amp.log
내 로그는 모두 다음 폴더에 저장됩니다 /var/log/mail_logs/amp.log
.
Oct 18 13:29:28 server.com AMP_Logs: Info: Begin Logfile
Oct 18 14:29:28 server.com AMP_Logs: Info: Version: 12.1.0-000 SN: .....
Oct 18 14:29:28 server.com AMP_Logs: Info: Time offset from UTC: -14400 seconds
Oct 18 15:29:23 server.com AMP_Logs: Info: Response received for.....
Oct 18 15:29:23 server.com AMP_Logs: Info: File reputation query.....
Oct 19 13:29:23 server.com AMP_Logs: Info: Response received for fil....
Oct 19 13:29:58 server.com AMP_Logs: Info: File reputation query ....
Oct 19 13:29:58 server.com AMP_Logs: Info: File reputation query ....
datetime
로그의 일부를 사용하여 mail_prod_logs.conf
.
그래서 그것은 다음과 같습니다:
/var/log/mail_logs/Sep/30/23.log
/var/log/mail_logs/Oct/01/00.log
/var/log/mail_logs/Oct/01/01.log
/var/log/mail_logs/Oct/01/02.log
...
어떻게 해야 하나요?
답변1
동적 파일 템플릿을 사용하여 이 작업을 수행할 수 있습니다. 사용하다속성 변경자%timestamp%
속성 부분, 특히 옵션 date-day
및 date-hour
문자 1~3 date-rfc3164
("Oct 9 09:47:08"과 유사한 문자열)을 선택합니다 . 일반적으로 예제에서는 템플릿을 다음과 같이 부릅니다 DynFile
.
$template DynFile,"/var/log/mail_logs/%timestamp:1:3:date-rfc3164%/%timestamp:::date-day%/%timestamp:::date-hour%.log"
템플릿을 사용하려면 ...then -/var/log/mail_logs/amp.log
다음으로 바꾸세요....then -?DynFile
더 쉬운 처리를 위해 문자로 된 3개 월(1월, 2월...)을 2자리 월로 바꾸는 것을 고려하고 있다면 대신 사용하세요.
$template DynFile,"/var/log/mail_logs/%timestamp:::date-month%/%timestamp:::date-day%/%timestamp:::date-hour%.log
답변2
로그 줄이 코드 조각에 표시된 대로 형식화되었다고 가정하면 다음과 같이 시작됩니다.
awk '{
dir=$1 "/" $2; log_file=dir "/" substr($3, 1, 2) ".log"
if (!exists[dir]++) {system("mkdir -p " dir)};
print > log_file
}' amp.log
이 작업은 에서 수행됩니다 /var/log/mail_logs/
.
날짜별 디렉토리가 존재하지 않는 경우 외부 명령을 호출하면 해당 디렉토리가 생성됩니다 system
. mkdir
전달하면 -p
필요에 따라 상위 디렉터리가 생성됩니다(따라서 디렉터리는 10월이 처음 시작될 때 생성됩니다 Oct
). 또한 mkdir -p /Oct/01
디렉토리가 이미 존재하는 경우 오류가 보고되지 않는지 -p
확인하십시오 .mkdir
print
로그 시간 구성 요소를 기반으로 이름이 기록되는 파일에 로그 줄을 쓰기 위해 호출됩니다 . 각각의 새 로그 파일은 명령 수명 동안 처음 기록되고 추가될 때 생성됩니다.
덮어쓰는 대신 마지막 실행의 날짜/시간 기반 로그 파일을 추가하려면 로 변경할 수 있습니다 print >
.print >>
awk