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

标签 layout logback appender rollingfileappender

我需要的功能是写标题行在配置的日志文件的开头。此外,日志文件应为 翻身基于时间模式(我说的是 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/

相关文章:

android InterstitialAd 不显示

java - 防止 HTMLUnit 日志系统干扰 Logback

java - 使用 slf4j 的 Project Reactor 非阻塞日志记录

c# - log4net,配置ColoredConsoleAppender不显示异常

java - logback-smtpAppender 有没有办法从应用程序的主题中添加一些信息?

android - Sherlock DialogFragment 和对话框上的空白区域

html - jsfiddle layout broken : wrong input size. 大小存储在哪里?

log4net是单线程的吗?

html - 侧滚动 wordpress 网站

android - 部署apk后如何在android上更改logback配置?无需重新编译