예외 알림 플러그인 (Exception Notifier Plugin)
July 11th, 2007
레일스 애플리케이션을 배포한 후 Production 환경에서 발생하는 오류를 모니터링할 수 있는 방법이 없을까? 처음에는 레일스 로그 파일을 분석해서 찾아볼 생각을 했으나, 레일스 로그 파일이 엄격한 형식을 따르고 있지 않아서 쉽지 않았다. 그러던 중 찾은 것이 바로 Exception Notifier 플러그인이다.
이 플러그인을 설치하면, 예외가 발생되었을 때 미리 설정해둔 메일 주소로 예외가 발생한 상황의 환경과 함께 내용을 전달해준다. 함께 전달되는 정보는 HTTP 요청 정보, 세션, 환경 변수, 예외의 역추적(backtrace)이다. 물론 탬플릿을 바꾸거나 클래스를 확장해서 이 정보를 보강할 수도 있다.
이 플러그인은 레일스 서비스를 운영하는데 많은 도움이 된다. 이 플러그인을 사용할 때는 스레드뷰를 지원하는 메일 클라이언트(ex. gmail)를 사용하는 것이 좋겠다. 간혹, 사소한 실수 하나로 수백 수천통의 메일을 날아올 수 있으니 :) 그리고 이 플러그인을 확장해서 예외 정보를 메일 뿐 아니라 데이터베이스나 에러 로그 파일에 따로 남겨놓으면 나중에 따로 분석이 필요할 때 도움이 될 것이다.
한가지 주의할 점은 이 플러그인이 ActionController의 rescue_action_in_public을 재정의하고 있기 때문에, 이 메서드를 사용하는 다른 플러그인과 충돌이 생길수도 있다는 점이다. 필자는 플러그인 로드 순서를 조정해서 이 문제를 해결한 적이 있다.
설치 방법
레일스 애플리케이션 ROOT에서 다음 명령으로 플러그인을 설치한다.
- script/plugin install exception_notification
환경 파일(config/environment.rb)에 메일을 받을 주소와 메일의 prefix를 정해준다. EdgeRails를 사용중이라면 config/initializers/exception_notification.rb 정도의 파일을 만들고 여기에 넣는 것도 좋겠다.
- ExceptionNotifier.exception_recipients = %w(admin@myapp.com)
ExceptionNotifier.email_prefix = "[MY-APP-ERROR] "
그리고 ApplicationController에 다음 줄을 추가해주면 모든 설정이 끝난다.
- class ApplicationController < ActionController::Base
include ExceptionNotifiable
...
end
이 글은 스프링노트에서 작성되었습니다.
이 글은 스프링노트에서 작성되었습니다.




Leave a Reply