我可以将 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:
- 在 log4j 配置文件中添加 Appender (log4j.properties)
- 引用您的自定义 Appender class,它将包含处理日志的方法
我不想将它打印到控制台或写入某个文件,而是想将所有日志(即消息)收集到 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:
- 在 log4j 配置文件中添加 Appender (log4j.properties)
- 引用您的自定义 Appender class,它将包含处理日志的方法