2014-12-12 4 views
3

Resque를 사용하는 루비 응용 프로그램 (은 Rails이 아님)이 있습니다. 내가 가진 노동자 중 한 사람이 무슨 일이 일어나고 있는지 알고 싶습니다.순수한 루비 응용 프로그램에서 Resque의 작업자에서 Logger를 사용하는 방법

이렇게하려면 로커 클래스를 in the officiel documentation으로 사용합니다. 다음은

내가 노동자 내부에 로그인하는 방법이다 : 내 노동자를 실행할 때

require 'resque' 
require 'logger' 

<code> 

Resque.logger = Logger.new File.new('logfile.log', 'a') 
Resque.logger.info "Whatever" 

그러나, 아무것도 실제로를 기록되지되고있다. 마치 작업자가 실제로 모든 로그 지침을 무시하는 것과 같습니다. 오류는 발생하지 않습니다. 다른 코드 조각은 실제로 작동합니다 - 로깅 부분 만 무시됩니다.

로거 클래스 자체 (예 : logger = Logger.new)를 사용해 보았지만 그 결과는 같습니다.

내 resque 작업자에 실제로 로그 할 수있는 방법에 대해 알고 있습니까?

감사!

+0

여기에 행운이 있었나요? – rafb3

+0

로거가 자동 플러싱되지 않아서 쓰지 않을 수 있습니까? http://ruckus.tumblr.com/post/11619655587/logging-to-railslogger-from-a-resque-job – jwadsack

답변

1

사용하여 다음

Logger.new(path_to_log_file).info(anything) 
1

당신은, 당신은 다음의 경우이

Resque.logger.level = Logger::DEBUG 

같은 것을 사용할 수 있습니다 활성화 인쇄 정보 로그에 대한 로그 수준을없는 당신이 거기에 링크 된 문서에 따라된다 당신은 Logger docs을 들여다 보니 레벨은

으로 표시됩니다. DEBUG < INFO당신이 보여줄 수있는 기록 문자열을 가지고 당신이 중 하나가 Logger::DEBUG 또는 Logger::INFO 필요 logger.info을 사용하는 경우그렇게

< FATAL < UNKNOWN < 오류를 경고한다.

또한 로거 초기화가 프로세스를 대기열에 넣는 작업뿐만 아니라 작업자를 실행하는 프로세스에 의해 실행되는지 확인하십시오.

+0

지난 며칠 동안 인터넷을 통해 찾을 수있는 거의 모든 기술을 시도했습니다. 단순히 아무 일도 일어나지 않습니다. 나는 당신이 쓴 것과 아무런 오류가 없지만 아무것도 기록되지 않고있다. 나는 정말로 그것을 얻지 않는다. – henritroyat

+1

@henritroyat 그러면 env에'VERBOSE = 1'이 필요할 것입니다 – rafb3

0

내 환경 : rails 5.0.1, resque : 1.26.0.

config/initializers/resque.rblib/tasks/resuqe.rake에 리퀘스트 로거를 설정했지만 나에게 적합하지 않습니다.

하지만 완벽하지는 않지만 모든 작업 내에서 리졸징 로거를 구성하십시오.

# update_xxx_job.rb 
class UpdateXxxJob 
    def self.perform 
    Resque.logger = Logger.new("#{Rails.root}/log/resque.log") 
    Resque.logger.level = Logger::DEBUG 

    Resque.logger.info 'Job starts' 
    ... 
    end 
end 

자세한 내용은 another answer.