Конфигурация строки формата журнала Rails
Как настроить рельсовый логгер для вывода его строк журнала в другом формате? Я хотел бы получить что-то более информативное, например:
[Уровень журнала] [Время] [Сообщение]
Отладка: 20-20-2008 13: 11: 03.00: вызванный метод
Это действительно поможет мне, когда я хочу привязать свой файл development.log к сообщениям, которые поступают только с определенного уровня журнала, например debug.
Ответы
Ответ 1
Был ли какой-то поиск и найден этот в группе google RubyOnRails.
Поэтому я немного изменил его и поместил в конец моей среды. rb:
module ActiveSupport
class BufferedLogger
def add(severity, message = nil, progname = nil, &block)
return if @level > severity
message = (message || (block && block.call) || progname).to_s
level = {
0 => "DEBUG",
1 => "INFO",
2 => "WARN",
3 => "ERROR",
4 => "FATAL"
}[severity] || "U"
message = "[%s: %s #%d] %s" % [level,
Time.now.strftime("%m%d %H:%M:%S"),
$$,
message]
message = "#{message}\n" unless message[-1] == ?\n
buffer << message
auto_flush
message
end
end
end
В результате получается строка формата следующим образом:
[DEBUG: 0121 10:35:26 # 57078] Представленные макеты /_header (0.00089)
Ответ 2
Для рельсов 4 приложения я собрал простой жемчуг, который не только добавляет поддержку базовых тегов, таких как отметка времени и уровень журнала, но даже добавляет цвет к самим сообщениям журнала.
https://github.com/phallguy/shog
Ответ 3
Проблема с тегами заключается в том, что они загромождают ваши журналы до того места, где они не читаются.
Я бы рекомендовал нечто вроде timber. Он автоматически увеличивает ваши журналы с помощью контекста (уровень, время, идентификатор сеанса и т.д.), Не жертвуя удобочитаемостью.
Ответ 4
# config/initializers/rack_logger.rb
module Rails
module Rack
class Logger < ActiveSupport::LogSubscriber
# Add UserAgent
def started_request_message(request)
'Started %s "%s" for %s at %s by %s' % [
request.request_method,
request.filtered_path,
request.ip,
Time.now.to_default_s,
request.env['HTTP_USER_AGENT'] ]
end
end
end
end
ссылка источника