gpt4 book ai didi

layout - 自定义 Logback Appender - 前置文件头并使其翻转

转载 作者:行者123 更新时间:2023-12-04 05:32:30 25 4
gpt4 key购买 nike

我需要的功能是写标题行在配置的日志文件的开头。此外,日志文件应为 翻身基于时间模式(我说的是 logback 1.0.7)。

所以,我正在考虑写一个 附件 - 虽然我不确定它是否不是自定义 布局 我真正需要的。

1) 附加器

根据 logback 的文档,正确的方法是扩展 AppenderSkeleton ,但是我将如何将它与 RollingFileAppender 结合起来(使文件翻转?)

另一方面,如果我扩展 RollingFileAppender ,我应该重写什么方法来装饰现有的功能?我如何告诉它只在文件的开头写入特定的字符串?

2) 布局

类似地,该方法似乎正在扩展LayoutBase , 并提供 doLayout(ILoggingEvent event) 的实现.
但同样,我不知道如何装饰行为 - 只是在文件中添加一个新行,而不是破坏它的功能(因为我仍然希望其余日志正确显示)。
getFileHeader()LayoutBase看起来很有希望,但我该如何使用它?它甚至打算被自定义布局覆盖吗? (可能是的,因为它是 Layout 界面的一部分,但那又如何呢?)

谢谢!

最佳答案

在这里,我正在回答我自己的问题,以防万一其他人遇到同样的问题。
这就是我最终做到的方式(但不知道这是否是正统方式):

我没有扩展 AppenderSkeleton,而是扩展了 RollingFileAppender(以保持翻转功能),并覆盖了它的 openFile() 方法。在这里,我可以操作日志文件并在其中写入标题,然后让它执行默认情况下需要执行的任何操作。像这样:

 public void openFile(String fileName) throws IOException {
super.openFile(fileName);
File activeFile = new File(getFile());
if (activeFile.exists() && activeFile.isFile() && activeFile.length() == 0) {
FileUtils.writeStringToFile(activeFile, header);
}
}

我在logback.xml中配置了header,就这么简单: <header> value </header> .这会将它注入(inject)我的新附加程序的 header 字段中。

似乎可以正常工作,但是如果您知道更好的方法,请发布!

关于layout - 自定义 Logback Appender - 前置文件头并使其翻转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13295268/

25 4 0
文章推荐: ruby-on-rails - 如何将变量从 let 传递到共享示例?
文章推荐: ruby-on-rails - Ruby on Rails div_for 与
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com