我可以将 log4j 中的日志(消息)收集到一个 java 对象中吗

Can I collect logs (messages) from log4j into one java object

我不想将它打印到控制台或写入某个文件,而是想将所有日志(即消息)收集到 Java 对象中的某个字符串集合中,如下所示:

class LogCollector {
    List<String> messages;
}

这将使我更容易生成自定义 HTML 报告(只需将 "LogCollector" 对象传递到某些方法中)。如果我能用 Log4J 实现它会更可取。

更详细的问题: 我想做一些 class "LoggingPart":

class LoggingPart {
    String name;
    List<String> messages;
    List<LoggingPart> parts = new ArrayList<>();

    public static void start(String name) {
        parts.add(new LoggingPart(name));

        /* Logic that after every call LoggingPart.start("someName")  */
        /* in some other class will start collecting messages from    */
        /* logger into LoggingPart instance of name "someName"        */

        /* Report will be generated only of messages from particular  */
        /* instance with specified name                               */
    }
}

我被推荐了很多东西,其中包括创建自定义 TestNG 侦听器,但解决方案非常简单:制作一个额外的 log4j Appender:

  1. 在 log4j 配置文件中添加 Appender (log4j.properties)
  2. 引用您的自定义 Appender class,它将包含处理日志的方法