Nasze dzienniki produkcji są długie i zawierają znacznie więcej niż tylko błędy. Chciałbym drugi plik dziennika z tylko błędami/wyjątkami.Jak mogę zalogować błędy Railsy do oddzielnego pliku dziennika?
Czy to możliwe?
Używamy szyn 2.x
Dzięki.
Nasze dzienniki produkcji są długie i zawierają znacznie więcej niż tylko błędy. Chciałbym drugi plik dziennika z tylko błędami/wyjątkami.Jak mogę zalogować błędy Railsy do oddzielnego pliku dziennika?
Czy to możliwe?
Używamy szyn 2.x
Dzięki.
Na przykład, aby rejestrować wszystkie błędy ActiveRecord :: Base w pliku o nazwie log/exceptions.log
new_logger = Logger.new('log/exceptions.log')
new_logger.level = Logger::ERROR
new_logger.error('THIS IS A NEW EXCEPTION!')
ActiveRecord::Base.logger = new_logger
Dla kontrolerów i widzenia (ponieważ actionView rejestrator nie posiada swój własny rejestrator, więc to zależy w rejestratorze ActionController):
ActionController::Base.logger = new_logger
Czy istnieje sposób na ogólne wyłączenie wyjątków? lub może również rejestrować błędy erb/kontrolera w swoich własnych plikach? –
Opublikowano, jak robić kontrolery/widoki. –
Jak będą wyświetlane tylko błędy? Wyraźnie rejestrujesz informacje i kończy się to wyjątkami .log? – Khash
Spróbuj wykonać następujące czynności. Umieść metodę rescue_from w kontrolerze.
Nie testowałem tego. Ale może to stawia Cię w dobrym kierunku
class ApplicationController < ActionController::Base
rescue_from StandardError do |exception|
new_logger = Logger.new('log/exceptions.log')
new_logger.info('THIS IS A NEW EXCEPTION!')
new_logger.info(exception.message)
new_logger.info(exception.backtrace)
# Raise it anyway because you just want to put it in the log
raise exception
end
end
Jeśli używasz Rails 2.1 (także nie testowane)
class ApplicationController < ActionController::Base
def rescue_action_in_public(exception)
new_logger = Logger.new('log/exceptions.log')
new_logger.info('THIS IS A NEW EXCEPTION!')
new_logger.info(exception.message)
new_logger.info(exception.backtrace)
# Raise it anyway because you just want to put it in the log
raise exception
end
end
możliwe duplikat [Jak coś Rails w niezależnym pliku dziennika logowania?] (http://stackoverflow.com/questions/337739/how-to-log-something-in-rails-in-an-independent-log-file) – fl00r
Nie sądzę, że to duplikat - to inne pytanie. Informacje o tym, jak automatycznie dzielić standardowe pliki dzienników na bardziej szczegółowe części - zamiast ręcznie rejestrować w oddzielnym pliku. –