매일 로그 로테이션?


40

logrotate 구성이 "size"및 "daily"매개 변수로 지정된 경우 어느 것이 우선합니까? 이것은 어디에 문서화되어 있습니까? 이러한 회전이 부울 OR 연산으로 발생하기를 원합니다. 즉, 로그가 하루가 지나면 회전되거나 특정 크기보다 크면 회전됩니다. 그러나 logrotate는 현재 "size"지시문 만 사용하며 "daily"지시문을 무시하는 것으로 보입니다. Logrotate는 1 시간마다 실행되도록 설정되어 있습니다. OS는 Linux, Red Hat 및 Debian 파생 제품입니다.

또한 "일일"을 먼저 지정한 다음 파일 시작 부분에서 "크기"를 지정합니다. 순서가 중요한지 확실하지 않지만 어쨌든 구성 파일에서 먼저 와야합니다 ...

감사!



> 로컬 정의는 전역 정의를 재정의하고 나중에 정의 는 logrotate 3.8.7 맨 페이지에서 이전 정의를 재정의
John Bob Joe

답변:


61

는 IF 크기 지시어를 사용, logrotate에은을 무시 매일 , 매주 , 매월 , 그리고 매년 지시를. man logrotate명령 을 실행할 때 설명서에서 명확하지 않습니다 . 그러나 실제로 확인할 수 있으며 this와 같은 임의의 블로그 게시물에 언급되어 있습니다 .

logrotate 매뉴얼 페이지에 따르면 timesize 와 함께 사용할 수있는 유일한 크기 지시문 인 minsize 라는 지시문이 있습니다. 그러나 여전히 원하는 것은 아닙니다. 매일 minsize 를 사용하면 다음 과 같이 말합니다. 로그를 매일 #MB 이상일 때만 로그를 회전합니다 .

현재까지 logrotate를 사용하여 필요한 조건을 수행 할 수있는 방법을 찾지 못했습니다 . 크기가 #MB를 초과하지 않는 한 매일 회전하십시오 . 이 경우 즉시 회전하십시오 . 나는 이것이 logrotate 지시문 만 사용하여 지원되지 않는다고 생각합니다. prerotate , postrotate , firstactionlastaction 과 같은 스크립트 후크 지시문을 통해 영리한 스크립팅과 관련이있을 수 있습니다 .

업데이트 :

logrotate에 3.8.1로, maxsize그리고 timeperiod최적의 솔루션이 될 것이다 함께지지된다. 이 게시물에 대한 답변을 참조하십시오 : 로그가 특정 크기를 초과하지 않는 한 간격을 기준으로 로그를 회전하는 방법은 무엇입니까?


4
가장 좋은 옵션은 아마도 두 개의 개별 cron 명령을 사용하고 기본 conf로 매일 실행하도록 실행하고 x 분마다 하나씩 실행하여 일일이 아닌 size 지시문을 사용하여 오버플로가 걱정되는 파일로 구성하는 것입니다.
SilverbackNet

8
logrotate에 3.81로, maxsize그리고 timeperiod지원됩니다. serverfault.com/questions/474941/…
belacqua

1
@ belacqua 나는 3.8.7을 사용하고 있으며 timeperiod는 남자가 아닙니다.
JorgeeFG

올바른 버전은 실제로 3.81이 아닌 3.8.1입니다.
Tom Miller

2

@egg의 첫 번째 대답은 logrotate에 대한 나의 경험에 따르면 사실이 아닙니다!

경우 매일, 매월, ...첫 번째 및 그 이후 크기 지시, 매일, 매월, ... 무시됩니다 크기 지시어는 로그 파일에 적용됩니다.

마찬가지로 size 지시어를 사용한 다음 매일, 매주, 매월 및 매년 지시어를 처음 사용할 때 size 지시어는 무시됩니다.


1

매일을 추가하면 크기 조건이 충족 되더라도 매일 회전합니다. 크기 조건을 추가하면 로깅의 정도에 따라 하루에 두 번 회전 할 수 있습니다.

스크립트에서 Daily가 가장 먼저 시작되면 Size가 시작되지 않을 수 있습니다.


verbose 옵션을 사용하여 어떤 규칙이 사용되는지 확인하십시오. 내 테스트에서 더 구체적인 규칙이 더 일반적인 규칙을 무시할 수 있기 때문에 마지막 규칙 만 사용한다고 생각합니다.
Bram

예상되는 동작이므로 더 많은 회전이 가능합니다. (부울 OR) 그러나 내 문제는 이러한 회전이 발생하지 않는다는 것입니다. 지시문의 순서가 중요하거나 문서화 된 곳을 볼 수 없으므로 로그 회전의 버그 (아마도 기능) 인 것 같습니다.
고양이 바지

logrotate.conf와 대상으로 삼고 자하는 파일의 예를들 수 있습니까? 매일 시간 진행 이외의 조건이 없습니다. 크기는 조건부입니다.
Paul Hickox

/tmp/output.log {일일 크기 1k 회전 5}
고양이 바지

1
이 파일의 크기가 1k보다 크면 회전 하지만 예상대로 원하는대로 매일 회전 되지않습니다 .
고양이 바지

1

실제로 Red Hat의 맨 페이지는 size와 minsize의 차이점에 대해 매우 분명한 것으로 보입니다.

최소 크기

          Log  files  are rotated when they grow bigger then size bytes,
          but  not  before  the  additionally  specified  time  interval
          (daily,  weekly, monthly, or yearly).  The related size option
          is similar except that it is mutually exclusive with the  time
          interval  options, and it causes log files to be rotated with-
          out regard for the last rotation time.  When minsize is  used,
          both the size and timestamp of a log file are considered.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.