2017-11-14 14 views
1

내 로그 회전 설정에서 특정 로그 파일의 회전이 0으로 설정되었습니다. 그러나 파일 크기에 도달하면 이전 파일은 로테이션됩니다. application.log.1이 삭제되는 대신회전을 0으로 설정 한 후에도 로그 파일에 이전 파일이 회전하지 않음

설명서에 따라 회전을 0으로 설정하면 파일이 삭제되어야합니다. 왜 이런 일이 발생합니까? 로그 회전은 매시간 실행되도록 구성되어 있지만 로그 파일은 1 시간 이내에 크기에 도달한다고도합니다. 따라서 logrotate가 매시간 실행될 때 old application.log.1을 삭제하고 현재 application.logapplication.log.1으로 옮기고 새로운 application.log 파일을 만듭니다. 파일에 대한 는 config는 다음과 같습니다

/var/log/application.log 
{ 
    rotate 0 
    weekly 
    size 256M 
    missingok 
    notifempty 
    copytruncate 
    compress 
    delaycompress 
    sharedscripts 
    postrotate 
      reload rsyslog >/dev/null 2>&1 || true 
      /usr/sbin/scalyr-agent-2 stop 
      /usr/sbin/scalyr-agent-2 start 
    endscript 
} 

답변

0

그것은 rotate 0 설정에도 불구하고, 생성 할 새 파일 원인 모두 copytruncatedelaycompress 것 같습니다. 이전 파일을 즉시 삭제하려는 경우 (이유는 /dev/null에 직접 로그온하는 것이 가장 이상적입니까?) 따라서 compress 설정이 필요하지 않습니다. 당신이 정말로 copytruncate 필요한 경우, 생성 된 파일을 삭제하는 postrotate 명령을 추가

  • :

    내가 두 가지 옵션을 참조하면 copytruncate이 필요하지 않은 경우

    /var/log/application.log { 
        rotate 0 
        size 256M 
        missingok 
        notifempty 
        copytruncate 
        postrotate 
         reload rsyslog >/dev/null 2>&1 || true 
         /usr/sbin/scalyr-agent-2 stop 
         /usr/sbin/scalyr-agent-2 start 
         rm -f /var/log/application.log.1 
        endscript 
    } 
    
  • 을, 그것을 대체 create으로 변경하십시오 (서비스가 자체 로그 파일을 새로 작성하는 경우).

    /var/log/application.log { 
        rotate 0 
        size 256M 
        missingok 
        notifempty 
        create 
        postrotate 
         reload rsyslog >/dev/null 2>&1 || true 
         /usr/sbin/scalyr-agent-2 stop 
         /usr/sbin/scalyr-agent-2 start 
        endscript 
    } 
    

    create 명령에 필요에 따라 소유자와 권한을 추가하십시오.

    • weekly 제거 : 주파수와 size
    • compressdelaycompress 명령을 제거 상호 배타적 : 당신이 당신의 오래된 파일을 삭제하려면, 왜 귀찮게

    은 또한 다음과 같은했다 첫 번째 장소에서 압축? 위의 지적대로 첫 번째 장소에서 로그를 원하는, 그래서 그들을 쓰는 응용 프로그램을 방지하려고, 또는 /dev/null로 리디렉션하지 않는 것처럼 당신이 정말로 그들을 필요하지 않은 경우

는하지만, 그것은 보인다 .

사이드 참고 : 로그 파일이 삭제되지 않습니다 만 복사, 다음 장소에 을 잘립니다 : 무슨 일이 일어나고 있는지 당신의 설명은 copytruncate 설정이 때문에 매우 정확하지 않습니다. 이것은 쓰고있는 파일 핸들을 변경할 수없는 프로그램에 사용됩니다.

+0

"왜 처음에는/dev/null에 직접 로그인하지 않습니까?" 가장 최근의 로그를 유지하려고하지만 오래된 로그를 유지할 필요가 없기 때문입니다. 특히 어떤 일이 일어나고 있지만 기록적인 로그가 필요하지 않은 동안에는'tail -f'로 로그를보고 싶을 수도 있습니다. – Thayne

+0

@thayne 의미가 있습니다. –