2013-07-09 3 views
2

Padrino에서 사용자 정의 로그 메시지는 물론 표준 출력에있는 모든 로깅 정보가 포함 된 사용자 정의 로그 파일을 만들어야합니다. 나는 사용자 정의 로그 파일을 생성 할 수 있었지만 stdout 파일 (development.log, production.log 등)은 여전히 ​​로깅 문으로 생성됩니다. 나는 boot.rb 파일에 다음 줄을 퍼팅 시도했다, 그러나이 중 어느 것도 제대로 작동하지 :Padrino 사용자 정의 로그 파일

나에게 대부의 development commandslogger documentation 살펴 보았다
Padrino::Logger::Config[:development][:stream] = :to_file 

Padrino::Logger::Config[:development] = { :log_level => :debug, :stream => :to_file } 

Padrino::Logger::Config[:development][:stream] = :null 

Padrino::Logger::Config[:development] = { :log_level => :debug, :stream => :null} 

하지만 도움이되지 않았다.

도움이 될 경우이 로그는 사용자 지정 로그 파일을 생성하는 코드입니다. (이 코드를 실행하든하지 않든, stdout 파일은 계속 생성됩니다.) :

log_path = File.join(custom_log_path, 'My Service') 

FileUtils.mkdir_p log_path 
log_file_path = File.join(log_path, "MyService_#{current_date_time_formatted}.log") 
logger = File.open(log_file_path, "a+") 

if defined?(PADRINO_ENV) && PADRINO_ENV == 'production' 
    $stdout.reopen(logger) 
    $stderr.reopen(logger) 
end 

어떤 도움을 주셔서 감사합니다!

+0

'Padrino.before_load do' 또는 그 내부에 로거 구성을 수행합니까? – ujifgc

+0

@ujifgc'Padrino.before_load do' 전에 설정을합니다. – shakin

답변

1

이 작업을 수행 할 수 있어야한다 :

Padrino::Logger::Config[:development][:stream] = logger 
# or 
Padrino::Logger::Config[:production][:stream] = logger 

당신이 logger를 정의한 후. config[:stream]이 키워드를 수신하지 않으면 Padrino::Logger은 출력 스트림으로 전달 된 것을 사용합니다.

Padrino 로거에 대한 자세한 내용은 관련 Padrino Core 코드, 특히 self.setup! : https://github.com/padrino/padrino-framework/blob/master/padrino-core/lib/padrino-core/logger.rb을 확인하십시오.

+0

그건 작동하지 않습니다. 여전히 stdout 로그 파일과 내 사용자 정의 파일을 모두 생성합니다. 나는 그 Padrino Core 코드를 보았습니다. 그리고 그것은 당신이 제안한 것이 작동해야하지만 어떤 이유로 그것은 여전히 ​​그렇지 않은 것처럼 보입니다. – shakin

+0

Padrino 사이트의 "sample_blog"응용 프로그램에 위와 동일한 코드를 넣었 기 때문에 다른 것으로 stdout 로그를 만들어야합니다. 그러면 우리가 기대하는대로 작동합니다. 내 사용자 지정 로그 파일 만 만듭니다. – shakin

+0

문제가있는 패드 리노 응용 프로그램이 Trinidad를 통해 실행 중이므로 stdout 로그 파일을 만드는 것으로 생각됩니다. 몇 가지 테스트를하고 있으며 결과를 얻 자마자 업데이트를 게시 할 것입니다. – shakin