java - log4j2 2.13版本中扩展RollingFileAppender的几个方法

标签 java logging log4j log4j2

我们有一个使用自定义 RollingFileAppender 的庞大应用程序(从 log4j 1.x 中的 org.apache.log4j.RollingFileAppender 扩展)。我们重写了一些方法,但两个主要方法是 rollOver() 和 subAppend(),如下所示:

    public void rollOver()
    {
        // Custom Code to specify how rolled-over files should be numbered and which file should be 
        // overwritten when MaxBackupIndex is reached
    }

    public void subAppend(LoggingEvent event)
    {
       // Custom Code to encrypt message before writing it
       String data = this.layout.format(event);
       if (isEncryptionOn())
        {
            data = PlatformEncryptDecrypt.encrypt2Way(data);
            data = toUnicodeHexString(data);
        }
        this.qw.write(data);
        .
        .
        .
        // Other code taken from parent class
        .
        .
        .
    }

在将其迁移到 log4j2 时,我想尽可能地利用 log4j2 的 RollingFileAppender,同时仅覆盖选定的方法。由于 RollingFileAppender 是最终类,我更喜欢使用构建器来创建自定义附加程序。我浏览了一些其他类似的帖子,但他们正在谈论使用 RollingFileAppender 记录一些额外的属性。

使用当前最新版本的 log4j2(即 2.13)实现此目的的最佳方法是什么?非常感谢任何帮助。

最佳答案

如果您只想加密数据,则不要覆盖 RollingFileAppender。相反,实现您自己的布局。事实上,如果您想根据您的要求创建 Jira 问题,我愿意添加一个封装另一个布局的 EncryptingLayout。

同时,只需创建一个接受另一个布局作为配置属性的布局。然后布局中的方法调用该布局的相应方法,然后加密结果。

关于java - log4j2 2.13版本中扩展RollingFileAppender的几个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59425498/

相关文章:

logging - 使用企业库进行日志记录的模式

grails - 如何配置Grails插件以覆盖 “parent”应用程序的Log4J设置?

java - 非旋转 log4j 文件附加器?

登录特定 Controller 的 grails

java - java.awt.Window 的全屏问题

Java Swing 旋转和缩放

java - 无法重绘我的 JFrame/JPanel

Java:修改 Java 应用程序的系统属性

python - 如何使 SMTPHandler 不阻塞

javascript - cordova console.log - 我可以设置 "Tag"和 "Level"吗?