Как изменить уровень журнала в Синатре - PullRequest
5 голосов
/ 08 декабря 2011

Я использую этот код для включения входа в мое приложение Sinatra:

log_file = File.new('my_log_file.log', "a") 
$stdout.reopen(log_file)
$stderr.reopen(log_file)    
$stdout.sync=true
$stderr.sync=true

Фактическое ведение журнала выполняется с помощью:

logger.debug("Starting call. Params = #{params.inspect}")

Оказывается, что регистрируются только сообщения журнала INFO или более высокого уровня, а сообщения DEBUG не регистрируются. Я ищу способ установить уровень журнала в DEBUG.

Ответы [ 3 ]

26 голосов
/ 03 марта 2012

Вы можете установить уровень журнала, используя

configure :development do
  set :logging, Logger::DEBUG
end

Sinatra настраивает вас с Rack :: Logger в его промежуточном программном обеспечении по умолчанию, которое может быть инициализировано с уровнем журнала (см. http://rack.rubyforge.org/doc/Rack/Logger.html). Sinatra инициализирует его с вашей настройкой logging, так что вы можете поставить число ( или Logger константа) вместо просто true.

Кстати, вот соответствующий метод из исходного кода Sinatra::Base, который инициализирует промежуточное программное обеспечение Rack :: Logger ( найдено здесь )

def setup_custom_logger(builder)
  if logging.respond_to? :to_int
    builder.use Rack::Logger, logging
  else
    builder.use Rack::Logger
  end
end

Это на Sinatra 1.3.2, я не знаю, было ли это иначе в более ранних версиях

6 голосов
/ 08 декабря 2011

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

before do
  logger.level = 0
end
5 голосов
/ 16 декабря 2013

В моей ситуации единственный способ обеспечить надежную работу журналов был следующим: (упрощенный пример)

Сначала я настроил регистратор и папку журналов следующим образом:

require 'logger'

configure do
  log_dir = "#{root}/log"
  Dir.mkdir(log_dir) unless Dir.exists?(log_dir)
  file = File.new("#{log_dir}/#{environment}.log", 'a+')
  file.sync = true
  use Rack::CommonLogger, file
end

Затем в отдельной конфигурации окружения

configure :test do
  set :logging, Logger::ERROR
end

configure :development do
  set :logging, Logger::DEBUG
end

configure :production do
  set :logging, Logger::INFO
end

Это работает удовольствие.

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