Конфигурация строки формата Rails logger - PullRequest
16 голосов
/ 20 января 2009

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

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

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

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

Ответы [ 4 ]

24 голосов
/ 21 января 2009

Покопался и нашел эту запись в группе Google RubyOnRails Talk.

Поэтому я немного изменил его и поместил в конец своей среды. 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 голосов
/ 19 июля 2014

Для приложений rails 4 я собрал простой гем, который не только добавляет поддержку базовых тегов, таких как отметка времени и уровень журнала, но даже добавляет цвет к самим сообщениям журнала.

https://github.com/phallguy/shog

1 голос
/ 20 сентября 2017
# 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

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

1 голос
/ 23 марта 2017

Проблема с тегами заключается в том, что они загромождают ваши журналы до такой степени, что они не читаются.

Я бы порекомендовал что-то вроде timber . Он автоматически дополняет ваши журналы контекстом (уровнем, временем, идентификатором сеанса и т. Д.) Без ущерба для читаемости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...