Squid는 사용자의 사이트 방문 로그를 생성합니다. /var/squid/logs/access.log
6개월이 지난 항목을 삭제하고 싶습니다 .
나는 매주 이 스크립트를 실행합니다. 나는 Perl 스크립트나 그와 유사한 것을 생각했습니다.
다음과 같습니다 access.log
.
항목은 다음과 같이 생성됩니다.
IP - - [15/Oct/2011:02:04:32 -400]
답변1
이 문제에 대한 일반적인 해결 방법은 파일에서 오래된 항목을 제거하는 대신 현재 로그 파일에 현재 항목만 포함되도록 로그 파일 순환을 사용하는 것입니다.
이것은 모두 logrotate
프로그램에 의해 처리됩니다. 다음 구성은 요구 사항을 대략적으로 충족해야 합니다. 지난 6개월 동안의 로그 항목을 보관하고 /var/squid/logs/access.log
매주 파일을 교체합니다.
/var/squid/logs/access.log {
weekly
rotate 26
missingok
nocreate
sharedscripts
postrotate
test ! -e /var/run/squid.pid || /usr/sbin/squid -k rotate
endscript
}
로그 파일의 데이터에 정말로 관심이 있다면 해당 데이터를 수정해서는 안 됩니다.
답변2
솔루션newsyslog
:
# logfile [owner:group] mode count when flags
/var/squid/logs/access.log root 644 26 $W0D0 JN
로그 파일은 삭제되기 전에 26번 순환됩니다. $W0D0
매주 일요일 1시에 회전함을 나타냅니다 0:00
.
이 플래그는 J
newsyslog가 압축된 회전 파일을 사용해야 함을 나타냅니다 bzip2
.
이 플래그는 N
신호를 보내야 하는 프로세스가 없음을 나타냅니다.