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

标签 ruby logging ruby-2.0

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

Logger.new("nemobuild.log")

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

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

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

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

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

最佳答案

您使用哪种 gem ?你能提供 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 选项(写入)切换为 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
    )

关于ruby - 不要附加但覆盖记录器的日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20704045/

相关文章:

Ruby:如何在 eval 中使用变量的字面值?

ruby - 将除英文字母和数字以外的所有字符替换为下划线

java - 在 Web 应用程序中为每个用户创建日志文件好吗

ruby - 如何修复此错误 : kernel_require. rb :45:in `require' : cannot load such file?

ruby - 无法安装 ruby​​ 2.0.0

ruby - if 语句中的局部变量

ios - 无法运行 Appium 服务器

arrays - 如何从数组中删除负重复项?

logging - 将 Sentry 日志记录与Elasticsearch结合使用

java - 测试失败时记录异常的最佳方式(例如使用 junit 规则)