Пользовательский файл журнала Padrino

Мне нужно создать собственный файл журнала в Padrino, который содержит всю информацию журнала, которая находится в стандартном выводе, а также пользовательские сообщения журнала. Мне удалось создать собственный файл журнала, но файл stdout (development.log, production.log и т. д.) по-прежнему создается с операторами ведения журнала. Я попытался поместить эти строки в файл boot.rb, но ни одна из них не работает:

Padrino::Logger::Config[:development][:stream] = :to_file

Padrino::Logger::Config[:development] = { :log_level => :debug, :stream => :to_file }

Padrino::Logger::Config[:development][:stream] = :null

Padrino::Logger::Config[:development] = { :log_level => :debug, :stream => :null}

Я просмотрел команды разработки и документация регистратора, но они не помогли.

Если это поможет, это код, который создает пользовательский файл журнала. (Независимо от того, запускаю я этот код или нет, файл stdout продолжает создаваться):

log_path = File.join(custom_log_path, 'My Service')

FileUtils.mkdir_p log_path
log_file_path = File.join(log_path, "MyService_#{current_date_time_formatted}.log")
logger = File.open(log_file_path, "a+")

if defined?(PADRINO_ENV) && PADRINO_ENV == 'production'
  $stdout.reopen(logger)
  $stderr.reopen(logger)
end

Любая помощь приветствуется!


person shakin    schedule 09.07.2013    source источник
comment
Вы делаете настройку логгера перед Padrino.before_load do или внутри него?   -  person ujifgc    schedule 10.07.2013
comment
@ujifgc Я делаю настройку до Padrino.before_load do   -  person shakin    schedule 10.07.2013


Ответы (1)


Вы должны быть в состоянии сделать это:

Padrino::Logger::Config[:development][:stream] = logger
# or
Padrino::Logger::Config[:production][:stream] = logger

после того, как вы определили logger. Если config[:stream] не получит ключевое слово, Padrino::Logger будет использовать все переданное в качестве выходного потока.

Для получения дополнительной информации о регистраторе Padrino ознакомьтесь с соответствующим кодом ядра Padrino, особенно self.setup!: https://github.com/padrino/padrino-framework/blob/master/padrino-core/lib/padrino-core/logger.rb.

person Jacob Brown    schedule 09.07.2013
comment
Это не работает. Он по-прежнему создает как файл журнала stdout, так и мой собственный. Я тоже просмотрел этот код ядра Падрино, и кажется, что то, что вы предложили, должно работать, но по какой-то причине это все еще не работает. - person shakin; 10.07.2013
comment
Что-то еще должно создавать журнал stdout, потому что я поместил тот же код, что и выше, в приложение sample_blog с сайта Падрино, и оно делает то, что мы от него ожидаем. Он создает только мой собственный файл журнала. - person shakin; 10.07.2013
comment
Приложение padrino, с которым у меня возникла проблема, запускается через Trinidad, поэтому я считаю, что это то, что создает файл журнала stdout. Я делаю некоторые тесты и опубликую обновление, как только получу результаты. - person shakin; 10.07.2013
comment
Дополнительный файл журнала создавал Тринидад. В качестве теста я закомментировал часть кода в файле Trinidad logging.rb, и дополнительный файл журнала больше не создается. - person shakin; 10.07.2013