gpt4 book ai didi

java - 在 Logback 中使用 getAppender()

转载 作者:行者123 更新时间:2023-11-29 05:57:35 25 4
gpt4 key购买 nike

我编写了一个自定义附加程序 JTableAppender,它实现了 ILoggingEvent。这个 appender 有一个 public setter setModel(..) 来为 appender 分配一个表模型,所以我可以在 doAppend() 中操作模型。

JTableAppender 在一个 xml 文件中配置,我将其命名为 TABLE:

<appender name="TABLE" class="blabla.jgwf.test.logger.JTableAppender">
<!-- encoders are by default assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>

为了能够从外部使用 setter,我尝试使用 appender

Logger logger = (Logger) LoggerFactory.getLogger("blabal");
JTableAppender<ILoggingEvent> appender = (JTableAppender<ILoggingEvent>)logger.getAppender("TABLE");

当我尝试使用设置模型时

appender.setModel(...);

对于这一行,我得到了一个 NullPointerException。 getAppender() 没有像我希望的那样工作。

最佳答案

已解决:使用 Logger.getRootLogger() 代替本地变量“logger”。

(示例)

SMTPAppender emailAppender = 
(SMTPAppender)Logger.getRootLogger().getAppender("SMTPAppender");

这样做,你不会得到 NullException,并且要在你的 appender 上APPLY 更改,你必须这样写:emailAppender.activateOptions();

关于java - 在 Logback 中使用 getAppender(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11471202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com