logrotate에서 delaycompress 옵션을 언제 사용합니까?


33

의 맨 페이지는 다음과 logrotate같이 말합니다.

It can be used when some program cannot be told to close its logfile
and  thus  might  continue writing to the previous log file for some
time.

나는 이것으로 혼란스러워합니다. 프로그램이 로그 파일을 닫으라고 지시 할 수 없으면 언젠가가 아니라 영원히 계속 작성 됩니다 . 압축이 다음 회전 주기로 연기되면 프로그램은 다음 회전주기 후에도 해당 파일에 계속 기록합니다. 연기는 어떻게 문제를 해결합니까?

copytruncate프로그램이 로그 파일을 닫으라고 지시 할 수 없을 때 사용해야한다는 것을 이해 합니다. 복사가 진행 중일 때 로그 파일에 기록 된 일부 데이터가 손실된다는 것을 알고 있습니다.

couchdb에 대한 logrotate 파일을보고 있었고 옵션 copytruncatedelaycompress옵션 이 모두 있습니다.

/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
   weekly
   rotate 10
   copytruncate
   delaycompress
   compress
   notifempty
   missingok
}

이미있을 delaycompress때 사용하는 점이없는 것 같습니다 copytruncate. 내가 무엇을 놓치고 있습니까?

답변:


27

귀하의 이해 copytruncate는 정확하지만 맨 페이지의 문구 delaycompress는 약간 오해의 소지가 있습니다. 예를 들어, 공유 스크립트를 사용하고 있고 모든 로그 파일이 회전했을 때 스크립트가 로그를 사용하여 프로세스에 신호를 보내는 경우와 같이 "일부 프로그램에서 즉시 로그 파일을 닫으 라고 지시 할 수없는 경우"라고 표시해야 합니다. .


1
를 사용할 때 copytruncate프로그램에 로그 파일을 닫으라고 지시 할 필요가 없습니다. 따라서 delaycompress함께 지정하는 것은 의미 가 copytruncate없습니까?
Anand Chitipothu

5
로그 항목을 잃어 버릴 수 있으므로 절대적으로 필요한 경우가 copytruncate아니면 절대 사용 하지 마십시오 . 이전 로그 파일을 먼저 압축 해제하지 않고도 읽을 수있는 기능을 제공 하는 다른 기능을 원할 경우 두 옵션을 모두 사용할 수 있습니다 . delaycompress
womble

copytruncate프로그램을 다시로드하도록 지시 할 수없는 경우 외에 다른 옵션이 있습니까?
Anand Chitipothu

5
아니요. 빨지 않는 소프트웨어를 사용해야하며 "로그를 다시로드하십시오"라는 신호를받을 것입니다.
womble

3

내가 당신의 질문을 완전히 이해했는지 확실하지 않지만, 당신이 내 생각을 묻는다면 ... 나는 이것을 사용합니다 :

postrotate
          killall -HUP syslog-ng
  endscript

그것은 로그를 죽이고 다음으로 이동하는 좋은 (또는 적어도) 방법입니다. 초당 톤의 데이터를 기록하는 Cisco의 ASA 플랫폼과 같은 "프로그램"의 경우 작동합니다.


3

우리는 사용:

  • 매일
  • 지연 압축
  • Nodateext

이렇게하면 아파치의 고정 된 사본이 만들어 access_log access_log.1져서 통계 패키지를 하루의 끝에 스크립트로 실행할 수 있습니다.

다음 날 logrotate는 파일 생성을 압축합니다. access_log.2.zip

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.