로그가 특정 크기를 초과하지 않는 한 간격을 기준으로 로그를 회전하는 방법은 무엇입니까?


20

logrotate 매뉴얼 페이지에서 :

minsize size
로그 파일이 크기 바이트보다 커지면 추가로 지정된 시간 간격 (일별, 주별, 월별 또는 연간)이되기 전에 회전하지 않습니다. 관련 크기 옵션은 시간 간격 옵션과 상호 배타적이라는 점을 제외하고 비슷하며 마지막 회전 시간에 관계없이 로그 파일이 회전합니다. minsize를 사용하면 로그 파일의 크기와 타임 스탬프가 모두 고려됩니다.

size size
로그 파일이 size 바이트보다 커지면 회전합니다. size 다음에 k가 있으면 크기는 킬로바이트 인 것으로 가정합니다. M이 사용되면 크기는 메가 바이트이고 G가 사용되면 크기는 기가 바이트입니다. 크기 100, 크기 100k, 크기 100M 및 크기 100G가 모두 유효합니다.

로그를 매주 회전시키고 로그 크기가 5M을 초과하면 추가 회전이 발생한다고 생각 하여 크기5M으로 설정 하고 간격매주 로 설정했습니다 . 그러나 발생하는 일은 로그가 5M을 초과하지 않는 한 회전하지 않는 것입니다. 이는 최소 크기 로 수행 되는 것으로 보입니다 .

매뉴얼을 잘못 해석하고 있습니까? 일주일에 5M을 초과하는 로그를 회전 시키려면 어떻게해야합니까?

편집하다:

다음 정보가 관련성이 있는지 확실하지 않지만 보충하기 만하면됩니다.

rsyslog를 사용하여 메시지, 보안, cron, maillog, 부팅에 대한 기본 로깅을 수행합니다. 다음은 위에서 설명한대로 크기와 간격이 설정된 두 번째 로그의 회전 날짜 및 파일 크기입니다.

filename  rotation date  file size
messages  20130129       5.3MB
secure    20130113       5.1kB
cron      20130113       3.6kB
maillog   20130113       1.1kB

알 수 있듯이 메시지 만 회전합니다.

EDIT2 :

확인해야합니다 man logrotate. 실제로 maxsize 옵션으로 업그레이드했습니다 . 이것은 내가 찾고있는 것이어야합니다 :

maxsize size
로그 파일은 추가로 지정된 시간 간격 (일별, 주별, 월별 또는 연간)이되기 전에도 크기 바이트보다 커지면 회전됩니다. 관련 크기 옵션은 시간 간격 옵션과 상호 배타적이라는 점을 제외하고 비슷하며 마지막 회전 시간에 관계없이 로그 파일이 회전합니다. maxsize를 사용하면 로그 파일의 크기 및 시간 소인이 모두 고려됩니다.

답변:


24

몇 가지 질문은 답이 여기있다 : 매일 logrotate에와 크기를?

일반적으로 logrotate하루에 한 번만 실행되므로 크기 제한이 정확하게 적용되지 않습니다. logrotate의 상태 파일 (아마도 /var/lib/logrotate.status)은 날짜 (시간이 아님) 만 저장하며 더 자주 사용하기위한 것이 아니므로 파일을 더 자주 회전시킬 수 없습니다 ( 업데이트 : 버전 3.85는 시간별 지원을 추가 하고 상태 파일에 완전한 타임 스탬프를 저장합니다 .)

rsyslogsyslog-ngsyslogd 는 어떤 것을 사용하고 있는지 말하지 않고 자체 관리 크기 기반 회전을 지원하므로 크기별로 회전하고 매주 회전 할 수 있어야합니다 (일부 생각이 필요할 수 있음) 동시 파일 회전으로 인해 실수로 무언가가 삭제되지 않도록 파일 이름 지정).logrotate

다른 옵션은 Apache와 마찬가지로 파이프 로그를 사용하는 것입니다. 실제로 Apache-2.4 rotatelogs 는이 기능을 정확하게 지원합니다 (이전 버전은 크기 또는 시간 만 독립적으로 지원). 로그가 어디에서 시작되는지는 말하지 않지만 파이프 또는 fifo에 로그하고 rotatelogs지원되는 경우을 사용할 수 있습니다 .

함께 logrotate<= v3.8.0 지원되는 세 가지 시나리오가있다 :

  1. 경과 시간에 관계없이 최대 1 일 1 회 크기로 크기 회전
  2. timeperiod의 크기에 관계없이 무조건 timeperiod 의해 회전,
  3. minsize & timeperiod 로그 파일 크기가 minsize를 초과하면 timeperiod 단위로 회전합니다. 일반적으로 사용되는 "최소 크기 1"은 0 바이트 로그가 회전하지 않고 혼란을 최소화 함을 의미합니다.

logrotate-3.8.1 추가합니다 :

  1. maxsize & timeperiod 는 크기가 최대 크기를 초과하거나 경과 시간이 지난 후 회전합니다. logrotate이 경우 하루에 한 번 이상 기본값을 실행해야 할 수도 있습니다.

logrotate-3.8.5 추가합니다 :

  1. 시간별 지원 및 상태 파일에 완전한 타임 스탬프를 저장합니다. logrotate이를 위해 적어도 1 시간마다 실행해야합니다 .

링크 덕분에 내 업데이트를 참조하십시오. 일부 스크립팅이 필요한 것 같습니다. minsize는별로 유용하지 않은 것 같습니다. maxsize 대신 왜 그런지 궁금합니다.
질문 오버플로

1
예, maxsize 옵션을 사용할 수 있습니다. 사례 마감 :)
질문 오버플로

업데이트를 읽기 전에 문서에서 발견되었습니다 ... 이제 답변이 확장되었습니다. 고마워.
mr.spuratic

1
> logrotate의 상태 파일 (/var/lib/logrotate.status 일 수 있음)은 날짜 만 저장합니다 (시간이 아님).이 명령문이 오래되었을 수 있습니다. 난 그냥 내 logrotate에 상태 파일을 확인하고, 두 번째 해상도와 타임 스탬프를 포함 : 2018-3-12-1 "/var/log/kern.log": 8 : 16
hyperair
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.