Ubuntu에서 애플리케이션 로그를 회전하는 방법은 무엇입니까?

Ubuntu에서 애플리케이션 로그를 회전하는 방법은 무엇입니까?

Ubuntu Linux 14.04를 사용하고 있는데 로그 회전에 문제가 있습니다. 이 파일이 있어요

rails@myapp:~$ ls -al myapp/log/production.log
-rw-r--r-- 1 rails rails 4522482443 Jun  5 12:11 myapp/log/production.log

내 /etc/logrotate.conf 파일에 이 내용이 있습니다.

/home/rails/myapp/log {
        daily
        rotate 4
        compress
        delaycompress
        missingok
        notifempty
        create 644 root root
}

하지만 내 로그는 절대 회전하지 않습니다. 이는 "myapp/log/Production.log" 파일에서 5월 8일 항목을 볼 수 있어서 안다. 로그는 매일 커지고 있습니다. 로그를 교체하려면 또 무엇을 해야 합니까?

답변1

첫째, logrotate가 자동으로 실행되지 않을 가능성이 높습니다(보통 cron 데몬을 통해).

둘째, /home/rails/myapp/log 파일을 회전시키려는 logrotate 구성 파일을 지정했지만 ls 출력에는 /home/rails/myapp/log/production.log 파일이 표시됩니다(저는 ~rails -> / home/rails로 가정합니다. 또한 소유자가 root:root인 새 빈 로그 파일을 생성하도록 logrotate에 요청했지만 ls 출력에서 ​​원본 파일은 Rails:rails의 속성입니다.

tl;dr; 대신 이 구성 파일을 사용하십시오(그리고 때때로 cron이나 이와 유사한 방식으로 logrotate가 실행되는지 확인하십시오).

/home/rails/myapp/log/production.log {
        daily
        rotate 4
        compress
        delaycompress
        missingok
        notifempty
        create 644 rails rails
}

또한 회전된 파일을 가리키는 파일 설명자에 대한 쓰기를 강제로 중지하려면 postrotate를 사용하여 애플리케이션을 다시 시작해야 할 수도 있습니다.

답변2

이 시도.

/home/rails/myapp/log

{  
   su rails rails
   daily
   missingok
   compress
   notifempty
   rotate 12
   create
   delaycompress
   missingok
   }

/etc/logrotate.d/myapp에 넣으세요.

설명이 거의 없습니다. Logroatate는 $HOME에 기록하므로 myapp.log의 순환은 Rails로 수행되어야 합니다.

su rails rails   

죄송합니다. 맨페이지에서 자세한 내용을 확인하세요.

su 사용자 그룹은 기본 사용자/그룹(일반적으로 루트)을 사용하는 대신 이 사용자 및 그룹에 설정된 로그 파일을 순환합니다. user는 교체에 사용되는 사용자 이름을 지정하고, group은 교체에 사용되는 그룹을 지정합니다. 여기에서 지정하는 사용자/그룹이 create 지시문에서 지정한 소유권을 가진 파일을 생성할 수 있는 권한이 충분하지 않으면 오류가 발생합니다.

소유자 그룹 회전 직후(postrotate 스크립트를 실행하기 전)에 로그 파일(방금 회전한 로그 파일과 동일한 이름)을 생성할 스키마 소유자 그룹을 생성합니다. mode는 로그 파일의 모드를 8진수로 지정하고(chmod(2)와 동일) owner는 로그 파일을 소유할 사용자 이름을 지정하며, group은 로그 파일이 속한 그룹을 지정합니다. 모든 로그 파일 속성은 생략될 수 있으며, 이 경우 새 파일의 이러한 속성은 원본 로그 파일과 동일한 값을 사용하여 생략된 속성을 나타냅니다. 이 옵션은 nocreate 옵션을 사용하여 비활성화할 수 있습니다.

죄송합니다. 영어로 더 잘 설명할 수 없습니다.

관련 정보