5

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

我知道我需要创建一个附加程序并将其与.JTextPaneLog4j 2

你有什么建议吗?

感谢您的帮助,马蒂

4

1 回答 1

2

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

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

其他几点:

  • 如果您只记录纯文本,事情会更简单,在这种情况下,您应该使用JTextArea.
  • 大概你会想要限制Document. 您可以通过检查每个追加的长度并Document.remove在超过最大长度时使用删除第一个 X% 来做到这一点。
  • 如果你有频繁的日志操作,你应该限制你追加到文档的频率,并缓冲其间的变化以减少摆动更新/重绘的开销。我通常使用 3 Hz。当您有多个日志生产者线程时,这也是可取的,因为尽管该Document.insertString方法是线程安全的,但它会在执行更新之前获得对文档的锁定,并可能导致相当多的争用。

我强烈建议为此参考文档。我从未使用过 Log4j 2,但文档看起来很简单。同样,Java 教程的“使用文本组件”部分提供了您需要了解的有关 Swing 端的所有信息。不幸的是,我无法在此处提供其他链接。

于 2013-04-28T14:46:16.827 回答