Linux에는 각각 약 41MB의 로그 파일을 생성하는 일부 응용 프로그램이 있습니다. 41MB 파일이 완료되면 애플리케이션이 에서 로 전환되어 log.1
덮어 log.2
쓰기를 시작합니다.log.2
log.1
log.2
새 파일 크기가 1MB를 초과할 때마다 다른 파일( )을 백업(gzip 및 다른 위치에 저장)하는 방식으로 이러한 파일을 백업하고 싶습니다 log.1
.
나는 파일이 41MB에 도달할 때마다 파일을 백업하는 스크립트를 사용해 왔지만 여기서 문제는 데이터가 여전히 매우 빠른 속도로 동일한 파일에 기록되는 동안 때때로 41MB 파일 백업이 스크립트에 의해 처리된다는 것입니다. 몇 초 동안 로그 데이터가 손실되었기 때문에 새 파일이 1MB 정도에 도달했을 때 다른 파일 쓰기가 완료되었는지 확인하기 위해 다른 파일을 백업하는 대체 방법을 시도하고 있습니다.
어떻게 할 수 있는지 아시나요?
답변1
이는 logrotate를 통해 수행할 수 있습니다. 아래 아파치 로그 예를 참조하세요.
1단계# 먼저 logrotate가 시스템에 설치되어 있는지 확인하세요. 거의 모든 Linux 배포판에서 기본적으로 사용할 수 있습니다.
2단계#은 /etc/logrotate_apache.conf
다음과 같이 생성됩니다.
#-------------------------------------------------------------------------------------
/var/log/httpd/*log {
missingok
minsize 1M
create
compress
rotate 1
lastaction
/sbin/service httpd reload > /dev/null 2>/dev/null || true
Log_dir="/var/log/httpd/Apache_$(date +%F)/"
# move to other location
[[ ! -d "${Log_dir}" ]] && /bin/mkdir "${Log_dir}" && /bin/mv /var/log/httpd/*.gz "${Log_dir}"
endscript
}
# system-specific logs may be also be configured here.
#-------------------------------------------------------------------------------------
3단계# 다음과 같이 Cron 작업을 설정합니다.
00 * * * * /usr/sbin/logrotate -f /etc/logrotate_apache.conf
답변2
당신은 시도 할 수 있습니다로그 회전, 몇 가지 예를 언급했습니다.여기
이것크기옵션을 사용하면 로그가 지정된 크기(예: 41MB)에 도달하면 로그를 회전할 수 있습니다.
사용백 스핀회전된 로그 파일을 다른 위치로 전송하는 데 사용할 수 있는 사용자 정의 스크립트를 실행하는 옵션입니다.