문제

내 Rails 앱은 이니셜 라이저에서 Rufus-Scheduler와의 프로세스를 시작합니다. 다음은 이니셜 라이저 코드의 제거 버전입니다.

# config.logger isn't available here, so we have to grab it from the Rails object
logger = RAILS_DEFAULT_LOGGER

logger.warn(Time.now.to_s + ": Starting Rufus Scheduler")

# run every Wednesday at 10 AM 
cron_string = '0 10 * * 3'

scheduler = Rufus::Scheduler.start_new
scheduler.cron cron_string do
  logger.warn(Time.now.to_s + ": Starting Background Process")
  (do work here)
  logger.warn(Time.now.to_s + ": Finished Background Process")
end

logger.warn(Time.now.to_s + ": Rufus Scheduler set Background Process to run with the following cron string: [#{cron_string}]")

모든 환경에서 코드는 챔피언처럼 실행됩니다. 포환 프로세스는 그 일을하고 우아하게 마무리합니다. 그러나 문제는 로깅에 관한 것입니다. RAILS_ENV가 "생산"으로 설정되면 CRON 블록 내부의 메시지는 전혀 로그를 작성하지 않습니다.

승객 2.2.9와 Rails 2.3.5를 사용하고 있습니다. 이 두 가지 중 하나는 프로세스가 로깅을 방지하는 것입니다. 누구든지 그것이 무엇인지, 생산을 로그인하는 방법을 말해 줄 수 있습니까?

도움이 되었습니까?

해결책

이 기사 덕분에 문제를 발견했습니다. http://earthcode.com/blog/2009/05/rails_script_runner_logging_cron.html

로거는 생산에서 자동으로 플러시하지 않을 것입니다. 그래서 방금 추가했습니다

logger.flush 

프로세스가 끝나고 모든 것이 효과가있었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top