不要附加但覆盖记录器的日志文件

时间:2013-12-20 12:52:29

标签: ruby logging ruby-2.0

我在我的应用程序中使用logger并将输出定向到这样的文件:

Logger.new("nemobuild.log")

我的记录器在创建后附加到此日志文件。

我想要它做的是清除每个程序启动时的日志文件。

在示例中是有关创建新日志文件的说明:

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

我必须使用哪些File::参数才能获得理想的行为?

2 个答案:

答案 0 :(得分: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
    )

答案 1 :(得分:3)

我在设置记录器之前最终删除了文件:

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