2013-12-20 101 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 
    )