如何创建与jTextPane连接的Log4j 2 appender?

时间:2013-03-11 14:09:16

标签: jtextpane appender log4j2

我目前正在尝试Log4j 2登录JTextPane。它应该像Netbeans IDE控制台中的STDERR或STDOUT一样(包括文本样式 - 颜色)。

我知道我需要创建 appender 并将其与JTextPane连接,但我不知道如何使用Log4j 2

你有什么建议吗?

感谢您的帮助, 玛蒂

1 个答案:

答案 0 :(得分:2)

我已经为Logback做了这个(仅限纯文本)。您需要做的基本事情是:

  • 实现自己的Appender以接收日志事件。 Log4j 2提供AbstractAppender,它将为您提供基线功能。
  • 使用适当的Layout格式化日志事件(取决于您JTextPane使用的Document类型。
  • 将格式化文本附加到Document的基础JTextPane

其他几点:

  • 如果仅记录纯文本,事情会更简单,在这种情况下,您应该使用JTextArea
  • 据推测,您需要限制Document中的文字数量。您可以通过检查每个附加的长度并在超过最大长度时使用Document.remove删除第一个X%来执行此操作。
  • 如果您经常进行日志操作,则应限制附加到文档的频率,并缓冲其间的更改以减少swing更新/重绘开销。我通常使用3赫兹。当你有多个日志生成器线程时,这也是可取的,因为尽管Document.insertString方法是线程安全的,但它在执行更新之前获得了对文档的锁定,并且可能导致相当多的争用。

我强烈建议您参考此文档。我从未使用过Log4j 2,但文档看起来非常简单。同样,Java教程的“使用文本组件”部分提供了有关Swing端需要了解的所有内容。不幸的是,我不能在这里提供额外的链接。