Подтвердить что ты не робот

Конфигурация строки формата журнала Rails

Как настроить рельсовый логгер для вывода его строк журнала в другом формате? Я хотел бы получить что-то более информативное, например:

[Уровень журнала] [Время] [Сообщение]

Отладка: 20-20-2008 13: 11: 03.00: вызванный метод

Это действительно поможет мне, когда я хочу привязать свой файл development.log к сообщениям, которые поступают только с определенного уровня журнала, например debug.

4b9b3361

Ответ 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

ссылка источника