복붙노트

[RUBY-ON-RAILS] 레일 생산 로그 회전에 루비

RUBY-ON-RAILS

레일 생산 로그 회전에 루비

루비 레일에 생산 응용 프로그램의 로그 회전을 가능하게하는 가장 좋은 방법은 무엇입니까?

그것은 호스팅 서버에 logrotate에를 사용하는 것입니다 또는 응용 프로그램에서 로거를 초기화하는 경우에 사용하는 옵션 세트가있다?

해결법

  1. ==============================

    1.당신은 레일을 구성 할 수있는 시스템 도구를 기록 사용할 수 있습니다.

    당신은 레일을 구성 할 수있는 시스템 도구를 기록 사용할 수 있습니다.

    설정 / 환경 / production.rb에서 예.

    # Use a different logger for distributed setups
    config.logger = SyslogLogger.new
    

    그런 식으로, 당신은 syslog에 로그인하고 로그를 순환하는 기본 logrotate에 도구를 사용할 수 있습니다.

    또 다른 옵션은 레일에 의해 남겨진 로그를 데리러 간단하게 구성 logrotate에하는 것입니다. 우분투와 데비안에 /etc/logrotate.d/rails_example_com라는 파일에, 예를 들면, 것이라고.

    /path/to/rails.example.com/tmp/log/*.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        copytruncate
    }
    

    아래의 제안에 따라, 레일은 레일 응용 프로그램을 다시 시작하는 것을 방지하기 위해, copytruncate를 사용하는 것이 좋습니다.

    편집 : 그들은 코멘트에 따라 여기에 문제의 원인을 사용하지 않기 때문에 "sharedscripts / endscript"제거. 제안 의견에 따라 그리고 640 루트 ADM을 만들 제거.

  2. ==============================

    2.당신은 logrotate에를 사용하는 경우에 당신은 어느 /etc/logrotate.d/ 디렉토리에 conf의 파일을 배치하여 아래의 옵션으로 선택할 수 있습니다.

    당신은 logrotate에를 사용하는 경우에 당신은 어느 /etc/logrotate.d/ 디렉토리에 conf의 파일을 배치하여 아래의 옵션으로 선택할 수 있습니다.

    # Rotate Rails application logs based on file size
    # Rotate log if file greater than 20 MB
    /path/to/your/rails/applicaton/log/*.log {
        size=20M
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        copytruncate
    }
    

    또는

    # Rotate Rails application logs weekly
    /path/to/your/rails/applicaton/log/*.log {
      weekly
      missingok
      rotate 52
      compress
      delaycompress
      notifempty
      copytruncate
    }
    

    그 copytruncate 현재 로그의 백업 복사본을 만든 다음 계속 쓰기 위해 로그 파일을 지 웁니다 유의하시기 바랍니다. 대안은 현재 파일의 이름을 변경 한 후 이전 파일과 같은 이름의 새 로그 파일을 생성하여 회전을 수행 할 만들어 사용하는 것입니다. 난 강력하게 당신이 만들 필요가 없다는 것을 알고하지 않는 한 copytruncate를 사용하는 것이 좋습니다. 그 이유는 왜 이름이 변경에도 불구하고 레일이 여전히 이전 로그 파일을 가리키는 유지할 수 있으며, 그들은 새로운 로그 파일의 위치를 ​​다시 시작해야 할 수 있습니다 것입니다. copytruncate 활성 파일과 같은 파일을 유지하여이 문제를 피할 수 있습니다.

  3. ==============================

    3.레일 (5)의 경우,이 내가 제한 로그 크기에해야 할 일을했을 콘솔에서 서버 출력을 변경하지 않는 것입니다 :

    레일 (5)의 경우,이 내가 제한 로그 크기에해야 할 일을했을 콘솔에서 서버 출력을 변경하지 않는 것입니다 :

    로그 폴더의 크기를 제한하려면 문서에 따르면, 사용자 환경 파일에 넣고 ( 'development.rb'/ 'production.rb').

    config.logger = ActiveSupport::Logger.new(config.paths['log'].first, 1, 50 * 1024 * 1024)
    

    이와 함께, 로그 파일은 50 메가 바이트 단위 더 큰 성장하지 않습니다. 당신은 자신의 취향에 크기를 변경할 수 있습니다. 두 번째 매개 변수 수단에 '1'일 개 역사적인 로그 파일이 보관됩니다, 그래서 당신은 로그를 100MB까지해야 - 현재 로그와 50Mbps를 이전 덩어리를.

    이 솔루션에 대한 소스.

  4. ==============================

    4.당신이 매일 로그 회전을 원하는 경우 레일 5의 경우, 당신은이 필요합니다 :

    당신이 매일 로그 회전을 원하는 경우 레일 5의 경우, 당신은이 필요합니다 :

      config.logger = ActiveSupport::Logger.new(config.paths['log'].first, shift_age = 'daily')
    

    문서에 따르면, 당신은 매주 또는 매월, 매일 사용할 수 있습니다.

  5. ==============================

    5.모든 로그 : 레일 로그, Rpush 로그, ... 당신은 서비스의 설정 파일에 다음과 같이 사용할 수 있습니다 :

    모든 로그 : 레일 로그, Rpush 로그, ... 당신은 서비스의 설정 파일에 다음과 같이 사용할 수 있습니다 :

     config.log_file = 'log/rpush.log'
     config.logger = ActiveSupport::Logger.new(config.log_file, 1, 20*1024*1024)
    

    그것은 의미만을 분할 후 1 개 이전 로그 파일을 저장합니다. 메인 로그 크기 결코 이상 20메가바이트

  6. ==============================

    6.내 환경 / production.rb 파일에 다음과 같은 logglier loggly 사용하여 레일에 로그를 전송 할 수 있습니다. 버전 4.1.0이다 레일

    내 환경 / production.rb 파일에 다음과 같은 logglier loggly 사용하여 레일에 로그를 전송 할 수 있습니다. 버전 4.1.0이다 레일

    RailsApplication::Application.configure do
    require 'logglier'
    config.logger = Logglier.new(<https://logs-01.loggly.com/inputs/inputkey>)
    log.info("hello from logglier")
    end
    
  7. from https://stackoverflow.com/questions/4883891/ruby-on-rails-production-log-rotation by cc-by-sa and MIT license