2009-07-20 7 views
9

ruby ​​on rails의 test.log 및 development.log에서 어떻게 자동 정리를 설정할 수 있습니까?Ruby on Rails의 로그 순환/삭제

서버 시작 및 테스트 실행시 dev 및 test 로그를 자동으로 삭제하는 설정이 있습니까?

+0

"정리"란 정확히 무엇을 의미합니까? – cakeforcerberus

답변

19

여기에 당신을 도울하기를 - 그것은에 대한 기본 옵션이 있습니다 회전. 여기

내가 할 작업은 다음과 같습니다 포매터와 environment.rb에서

우리가 이것은 우리 자신의 로거를 생성

new_logger = Logger.new(File.join(RAILS_ROOT, "log", "new_logger_#{RAILS_ENV}.log"), 'daily') 
new_logger.formatter = Logger::Formatter.new 

우리 자신의 로거를 정의 ... 환경 당 하나, (그래서 당신은 타임 스탬프 등 수) , 그리고 매일 회전. 때로는 매우 유용 -

그런 다음 초기화 블록에 우리는 당신은 분명히 여기에 너무 힘을 볼 수 있습니다 active_recordaction_controller에 대해 서로 다른 로거가이 로거

Rails::Initializer.run do |config| 

    config.active_record.logger = new_logger 
    config.action_controller.logger = new_logger 

    #snip 
end 

를 사용하여 레일을 물어!

+4

참고 : 레일스 3에서 "초기화 블록"은 development.rb, production.rb 등입니다. – bcoughlan

+1

또한 레일즈 3에서'RAILS_ROOT'는'Rails.root ','RAILS_ENV'는'Rails.env'입니다. Rails 커뮤니티가 더 이상 대문자 잠금 장치에없는 것처럼 보입니까? – Ziggy

2

이 튜토리얼의 내용을 참조하십시오. Rotating Rails Log Files, 내 로그 파일을 신경 쓰지 않기 때문에 문제가 해결되는지 알 수 없습니다.

호프 내가 너를 돕고있어!

+0

Unfortunetely logrotate는 Unix 계열 시스템에서만 사용 가능합니다. –

12

rake log:clearlog/*.log과 일치하는 모든 파일을 0 바이트로 잘라 버리는 레이크 작업입니다. 서버 시작 및 테스트 작업에서 호출 할 수 있습니다. 모든 스크립트/서버가

1

는, 당신은 같은 것을 할 수정할 수 있는지 메신저 루비 스크립트입니다 다음 ruby logger 손에

#!/usr/bin/env ruby 
require 'fileutils' 
FileUtils.rm File.join(File.dirname(__FILE__), log, *.log) 
require File.dirname(__FILE__) + '/../config/boot' 
require 'commands/server' 
0

실험 후, 레일즈 이니셜 라이저가 표준 루비 File 클래스를 사용하여 파일을자를 수있는 올바른 지점에로드된다는 것을 발견했습니다.

if MyRailsApp::Application.config.truncate_logs_on_server_start 
    # Making an assumption here that we're logging to a file... 
    File.open("log/#{ENV["RAILS_ENV"]}.log", "w") do |log_file| 
    log_file.puts("Initializer truncate_logs_on_server_start reset the log file") 
    log_file.puts 
    end 
end 

당신은 단지 다음 application.rb과 다양한 환경에서 MyRailsApp::Application.config.truncate_logs_on_server_start을 설정해야합니다 내가 설정/초기화/truncate_logs_on_server_start.rb이 있습니다.