У меня есть следующий класс регистратора:
module AppLogger
@@_loggers = {}
def self.logger; self._creater_logger("my_app_name"); end
def self._creater_logger(name)
@@_loggers[name] ||= $0 == "irb" ? Logger.new(STDOUT) : Logger.new(Rails.root.join("log",Rails.env + ".#{name}.log"))
end
def self.format_exception(e)
"#{e.message} [[\n\t\t#{e.backtrace.split("\n").map { |l| "\t\t#{l}" }.join("\n")}]]"
end
end
И использовать его:
AppLogger.logger.info(msg)
Есть ли способ автоматически добавлять метку времени в каждую строку журнала (без добавления ее вручную к каждому вызову регистратора)?
1 ответ
Вы можете переопределить синглтон вашего класса и добавить все или некоторые уровни уровней ведения журнала.
%w(debug info warn error fatal).each do |level|
eval <<-end_eval
def Applogger.logger.#{level}(message="", &blk)
if message == "" and block_given?
message = blk.call
end
super(<you time stamp>) { message }
end
end_eval
end
В основном добавляйте все, что душе угодно, в методе super.
Я взял этот код из своего старого сообщения в блоге, где мне нужно было добавить пользовательскую информацию в мой регистратор, вы можете обратиться к нему за более подробной информацией.
http://www.snitchmedia.com/blog/2009/11/24/pimping-ruby-logger-instance/
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.