【发布时间】:2012-07-13 08:18:58
【问题描述】:
我编写了一个自定义附加程序JTableAppender,它实现了ILoggingEvent。这个 appender 有一个公共 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() 没有像我希望的那样工作。
【问题讨论】:
-
appender 附加到哪个记录器?您应该在该记录器上调用 getAppender。
-
向我展示您的记录器的设置。看起来您还没有将 Appender 添加到记录器中,所以
logger.getAppender("TABLE")返回null。 -
好的,谢谢你们的提示。我忘了在配置文件中提到 appender。
-
// 添加此行后有效。
标签: java logging logback appender