当前位置: 首页 > 知识库问答 >
问题:

从自定义侦听器捕获log4j2 LogEvents

韦德厚
2023-03-14

有人知道这是否可能使log4j上的侦听器从命名方法/类捕获每个日志?最后是将检索到的日志添加到JPanel中。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="ERROR" name="config">
    <Properties>
        <Property name="LOG_DIR">logs</Property>
        <Property name="ARCHIVE">logs/archive</Property>
        <Property name="PATTERN">%-5level %d [%t] %c:%M(%L): %m%n</Property>
    </Properties>
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="${PATTERN}"/>
        </Console>

        <RollingFile name="fileWriter"
                     fileName="${LOG_DIR}/logs.log"
                     filePattern="${ARCHIVE}/logs.log.%d{yyyy-MM-dd-hh-mm}.gz">
            <PatternLayout pattern="${PATTERN}"/>
            <TimeBasedTriggeringPolicy/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="fileWriter"/>
        </Root>
    </Loggers>
</Configuration>
  public class MyClass() {
    private final static Logger logger = LogManager.getLogger();

    public void method() {
      logger.info("Some text...");
      logger.info("More text...");
    }
  }

谢谢!

共有1个答案

越雨泽
2023-03-14

我这样做的方法是编写一个自定义log4j2 appender。对于Log4j 2,这实际上很容易做到。下面是一个开始的例子:https://stackoverflow.com/a/24220688/1446916

该示例打印到控制台,但在您的情况下,您将追加到文本区域。(实际上你想提交一个Runnable到SwingUtils.invoke稍后(),将文本附加到文本区域。Swing要求所有交互都发生在AWT事件线程中。(

唯一剩下的就是把这两个连接在一起。您可以通过一些静态查找使文本区域可用。您可能需要考虑在接收日志事件时,如果文本区域尚未初始化,该怎么办。是否删除事件,或将其排队并稍后追加?

 类似资料:
  • 我试图在更新整数值时激发事件,但失败了。下面是我使用的代码: 我是不是漏掉了什么?

  • 我们定义了一个testng结果侦听器,它帮助我们将testng.xml中定义的每个测试用例的测试结果发送到一个内部工具,如下所示: } 然后我们将这个侦听器集成到其他项目的testng xml文件中,例如: 它按照设计工作:一旦测试套件完成,测试结果将上传到内部工具。 现在我们有一个要求,在一个项目中,testng.xml中的一个测试用例与内部工具中的3个测试用例相关,这意味着对于testng.x

  • 我有一个自定义视图,我可以在其中画线,我也可以选择线的宽度。我还有一个统计数据,在另一个片段中,我应该显示每一个笔画画了多少行。 所以我想创建一个自定义的监听器,它应该对不同的笔划宽度做出反应。每当笔划发生变化时,统计数据应显示所选笔划的新计数。。。 我用界面尝试了一下,但我真的不知道如何前进。我该怎么做?

  • 我们在这个项目上有一个微服务架构,我们使用普罗米修斯和格拉法纳进行监控。这些服务是使用Spring启动实现的,并且通过Spring启动执行器与普罗米修斯集成。该项目中有一些Kafka消费者,并且对于每个@KafkaListenerSpring都会生成一些指标。下面是用于指标的普罗米修斯时间序列 < code > org . spring framework . Kafka . kafkaliste

  • 问题内容: 我想知道如何在java中设置自己的侦听器。例如,我有一个将数字从1递增到100的函数。我想在值达到50时设置侦听器。我该怎么做?请给我建议任何教程。 问题答案: 查看使用侦听器的所有类的源代码。实际上,这很容易: 为您的听众创建一个界面,例如 维护清单 侦听器应在每个事件上进行遍历,然后遍历列表并使用一些事件参数调用适当的方法 至于观察者模式以及一些Java代码,请看维基百科。

  • 问题内容: 我目前正在研究Socket.io的Java实现,可从此处获取:netty- socketio 我已经启动并运行了服务器,并且它在客户端和服务器之间很好地接收/发送消息,但是我需要让某些消息被接收时触发事件,这就是我的困惑。 这是我的代码: } 本质上,我想发生的是从客户端收到特定消息时,我需要另一个类中的函数才能运行。我花了持续两个小时阅读,,和事件处理程序,但我真的不知道如何处理此问