我想将进入控制台的log4j消息分配给我的变量, 例如:
log.info("some info");
String info = // info message from log
我该怎么做?
答案 0 :(得分:1)
我不明白为什么,我认为您的消息比简单的字符串还要复杂。 您可以尝试实现自己的自定义java Appender并将其注册到Logger中。 Appender将充当消息的侦听器,您将能够实现一些自定义逻辑。
答案 1 :(得分:1)
Message message = new SimpleMessage("some info");
PatternLayout layout = PatternLayout.createDefaultLayout();
Log4jLogEvent event = Log4jLogEvent.newBuilder()
.setLevel(Level.INFO)
.setMessage(message)
.build();
String formattedMessage = layout.toSerializable(event);
形成记录器要打印的确切字符串的过程非常繁琐。您需要以编程方式描述通常在配置文件中写入的设置。然后,您应该构建一个事件,该事件将为您的设置提供上下文。
为简单起见,我采用默认布局,并使用简单的INFO
消息构建了一个事件。但是我很确定应该有一种方法可以从外部来源加载配置。试试:PatternLayout.createPatternParser(Configuration)
。