2013-12-20 130 views
3

我用記錄在我的應用程序的文件,並直接輸出到像這樣的文件:一旦其創建不追加,但覆蓋日誌記錄

Logger.new("nemobuild.log") 

我的記錄追加到該日誌文件。

我希望它做的是清除每個程序啓動的日誌文件。

在這些例子中是創建新的日誌文件的描述:

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

我會得到什麼File:: PARAMS使用,以獲得所需behaivior?

+0

沒有做的伎倆 – Ostkontentitan

+0

添加'文件:: 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) 

你使用標準的記錄儀?

然後你可以使用一個文件對象,而不是用於日誌文件的文件名:

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

如果你想回來的附加模式,您可以切換w - 選項(寫)a(追加):

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

假設你可以/想使用log4r

你需要的功能是一個選項FileOutputter的trunc

require 'log4r' 

log = Log4r::Logger.new('log') 
log.outputters << Log4r::FileOutputter.new(
    'log_file', :filename => 'mini_example.log', 
    :trunc => true, #Delete old log 
    )