【发布时间】:2017-10-20 17:13:17
【问题描述】:
我有一个关于 2.9 版 log4j2 的问题。 基本上我想和这里描述的一样(log4j),只有2.9: Sample log4j v1.x
我需要一个可以在类中的任何方法中调用的记录器。这是从某个起点递归收集所有后续的日志。该集合以后应该能够以任何形式被读出。
Logger logger = LogManager.getLogger();
public void meth1(){
StringWriter/ List/ String or whatever
logger.add(Collector);
logger.info("Start");
this.meth2();
this.meht3();
logger.info("Stop");
=> do something with the collected logs
}
public void meht2(){
logger.info("meth2: add Collection");
}
public void meth3(){
logger.info("meth3: add Collection");
}
public void meht4(){
logger.info("foo");
}
一旦在表单中设置了结尾,集合中应该包含以下日志:
- 开始
- meth2:添加集合
- meth3:添加集合
- 停止
感谢您的帮助
【问题讨论】:
-
您是否尝试将代码移植到 log4j 2.x? Log4J 2 也有一个 WriterAppender:logging.apache.org/log4j/2.0/log4j-core/apidocs/org/apache/…。
-
我试过了:stackoverflow.com/questions/33603750/… 但没有成功
-
向我们展示您的代码,以便我们了解您没有成功的原因:请发帖minimal reproducible example
-
正如我所说,我在线程 (stackoverflow.com/questions/33603750/…) 中尝试了 Vika Sachdeva 的版本。但是最后StringWriter里面什么都没有。
-
在 log4j (v1) 中我们这样做了:Layout layout = new PatternLayout(); StringWriter stringWriter = new StringWriter(); WriterAppender writerAppender = new WriterAppender(layout, stringWriter); logger.addAppender(writerAppender);在“单元测试”下的页面(documentation.magnolia-cms.com/pages/…)上,还显示了对 v2 的更新,但这里根本不使用附加程序.....