Борьба с логером не закончилась на этом.
Как показало тестовое использование log4r, сто он не на столько совершенен чтобы его использовать на все 100% в продакшине, по сему было принято решение сделать маленький хак для стандартного логера, для получения желаемого вида логов.
logger for rails 1.2.x < 2.0
Вынесем наш хак во внешний файл, для просторы миграции в другие приложения или его отключения.
#app/lib/logger_core_ext.rb'
######################################
#Для использования добавляем в app/config/enviromnent.rb следующие строки
#require 'logger_core_ext'
#RAILS_DEFAULT_LOGGER.formatter = Logger::CustomFormatter.new
######################################
class Logger
#revert rails logger hack
alias format_message old_format_message
class CustomFormatter < Formatter
def call(severity, time, progname, msg)
"[%s|#%5d|%s] %s| %s\n" % [severity[0..3], $$, time.to_s(:db), progname, msg2str(msg)]
end
end
end
#app/config/enviromnent.rb
require 'logger_core_ext'
RAILS_DEFAULT_LOGGER.formatter = Logger::CustomFormatter.new
Добавим для тестового просмотра вида нашего лога в application.rb
class ApplicationController < ActionController::Base
before_filter :showlog
def showlog
logger.debug('debug from log'){ "Received connection from" }
logger.info('info from log')
logger.info("MainApp"){ "Received connection from" }
logger.warn('warn from log')
logger.error('error from log')
logger.fatal('fatal from log')
end
end
Как результат в наших логах прекрасные и понятные записи.
Processing MessagesController#show (for 127.0.0.1 at 2008-03-11 11:35:48) [GET]
[INFO|# 5584|2008-03-11 11:35:48] | Session ID: 7e022c9982f2d317480f10f104c92407
[INFO|# 5584|2008-03-11 11:35:48] | Parameters: {"action"=>"show", "id"=>"14", "controller"=>"messages"}
[DEBU|# 5584|2008-03-11 11:35:48] | [Set SUBDOMAIN] -
[DEBU|# 5584|2008-03-11 11:35:48] debug from log| Received connection from
[INFO|# 5584|2008-03-11 11:35:48] | info from log
[INFO|# 5584|2008-03-11 11:35:48] MainApp| Received connection from
[WARN|# 5584|2008-03-11 11:35:48] | warn from log
[ERRO|# 5584|2008-03-11 11:35:48] | error from log
[FATA|# 5584|2008-03-11 11:35:48] | fatal from log
[DEBU|# 5584|2008-03-11 11:35:48] | Message Columns (0.000000) SHOW FIELDS FROM messages
[DEBU|# 5584|2008-03-11 11:35:48] | Message Load (0.000000) SELECT * FROM messages WHERE (messages.`id` = 14)
[DEBU|# 5584|2008-03-11 11:35:48] | Message Load (0.010000) SELECT * FROM messages WHERE (messages.`id` = 14)
|