2014-10-03 2 views
0

모든 환경에서 레일 로깅 작업을 동일하게 만드는 방법은 무엇입니까?일관된 레일 로깅 만들기

  • 현재 Windows/WEBrick 환경에서 puts을 사용하여 로그 할 때 출력은 콘솔에 나타나지만 표준 로그 파일에는 나타나지 않습니다.
  • Rails.logger을 사용하면 메시지가 로그 파일에만 기록됩니다.

모든 콘솔 출력이 로그 파일에 기록되고 각 로깅 이벤트에 대해 두 줄을 얻으므로 둘 다 사용하면 Apache/Passenger 환경에서 문제가 발생합니다.

답변

1

실제 로깅에는 puts을 사용하지 마십시오. 디버깅에 유용 할 수 있지만 적절한 로깅 메커니즘이 아닙니다.

무언가를 기록하려면 올바른 방법은 Rails.logger입니다.

Rails.logger.info "something" 

기본적으로 로거는 로그 파일에만 기록합니다. 승객과 같은 일부 서버는 콘솔에서 로그를 출력하는 데 사용되었지만 이는 표준적인 동작이 아닙니다.

콘솔에도 로그인하려면 로거가 개발 환경에서 다르게 동작하도록 설정할 수 있습니다. 사용자 지정 작업을 사용하여 새 로거를 만들면됩니다.

레일즈 로거는 ActiveSupport::Logger이며 개발 콘솔에 로그인 할 때, 루비 Logger에서

예를 상속 지정이 모두 기록하려면 개발 환경

Rails.logger = ActiveSupport::Logger.new(STDOUT) 

에서 다음 로거 파일 및 콘솔에 모든 로거를 프록시하는 사용자 정의 로거 클래스를 만듭니다. 하나는 파일 로거이고 다른 하나는 콘솔 로거입니다.

그러나 가장 간단한 생각은 tail -f입니다. 다른 콘솔 탭의 개발 로그는 로그 항목에 액세스 할 수 있습니다.