任务:
我正在尝试配置 Appender 以输出到 JTextArea。我相信 WriterAppender 能够写入 OutputStream。我已经对 OutputStream 进行了子类化以生成 JTextAreaOutputStream 类,该类当前是通过劫持 System.out 和 System.err 的输出来填充的。
配置文件:
# File appender for the GUI screen
log4j.appender.gui = org.apache.log4j.WriterAppender
log4j.appender.gui.Target=project.gui.GUIView.logWindow //logWindow is the name of my JTextArea
# Root logger option
log4j.rootLogger=INFO, gui
错误:
log4j:WARN No such property [target] in org.apache.log4j.WriterAppender.
问题:
有人知道我可以在哪里识别每个 Appender 的有效属性集吗?
最佳答案
你为什么认为WriterAppender有这样的属性吗?据我所知JavaDocs ,它不具有这样的属性。也许您将其与 ConsoleAppender 混淆了?
如果您打开相关的 JavaDoc/源代码并查找所有 JavaBean 样式的 setter 方法,您可以获得每个附加程序的属性列表。这意味着如果 WriterAppender
具有 target
属性,则需要具有 setTarget(...)
setter 方法。
无论如何,我建议您子类WriterAppender
并创建您自己的JTextAreaAppender
,它将传入您的自定义OutputStream
到父类(super class)。请参阅ConsoleAppender和 FileAppender对于此类子类的样本。
编辑:顺便说一句,由于您很可能需要将对 JTextArea
的引用传递给您的 JTextAreaAppender
,我建议您以编程方式配置 log4j。或者至少在引用 JTextArea
后以编程方式添加自定义附加程序。
或者,更好的是,您可以通过属性文件对其进行配置,但将初始 JTextArea
引用保留为空 - 在您的应用程序启动并且您拥有 jTextArea
引用之后,您可以以编程方式查看所有 log4j 附加程序并将引用传递给您的自定义 JTextAreaAppender
。
关于java - log4j:每个 Appender 的属性列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4268906/