2013-12-20 2 views
3

Я использую регистратор в моем приложении и направить вывод в файл, как это:DonT добавить, но перезаписать файл журнала в регистраторе

Logger.new("nemobuild.log") 

Мой регистратор добавляет к этому логфайл, как только его создали.

Что я хочу сделать, это очистить файл журнала при каждом запуске программы.

В примерах приводится описание для создания нового файла журнала:

file = File.open('foo.log', File::WRONLY | File::APPEND | File::CREAT) 

Что File:: PARAMS бы я должен использовать, чтобы получить желаемый behaivior?

+0

не сделал трюк – Ostkontentitan

+0

Добавить 'File :: TRUNC' См: http://www.ruby-doc.org/core-2.0. 0/File/Constants.html –

+0

попробуйте открыть режим 'File.open ('foo.log', 'w')' или попробуйте удалить * APPEND *. –

ответ

3

я в конечном итоге удаление файла до установки регистратора:

File.delete("nemobuild.log") 
logger = Logger.new("nemobuild.log") 
5

Какой драгоценный камень вы используете? Можете ли вы предоставить MWE?

С Logger.new ("nemobuild.log")

Я получаю ошибку:

`<main>': uninitialized constant Logger (NameError) 

Используете ли вы стандартный Logger?

Затем вы можете использовать объект файла вместо имени файла для файла журнала:

require 'logger' 
log = Logger.new(File.new("nemobuild.log",'w')) 
log.error('XX') 

Если вы хотите вернуть конкатенирующего режим, вы можете переключить w -option (запись) в a (добавить):

log = Logger.new(File.new("nemobuild.log",'a')) 

Предполагая, что вы можете/хотите использовать log4r:

Функция вам нужно, это вариант trunc из FileOutputter:

require 'log4r' 

log = Log4r::Logger.new('log') 
log.outputters << Log4r::FileOutputter.new(
    'log_file', :filename => 'mini_example.log', 
    :trunc => true, #Delete old log 
    ) 
Смежные вопросы