我正在尝试转换一个类,这个类是以前在log4j 1.x中使用AppenderSkeleton编写的,现在我正在尝试将我的服务迁移到log4j 2.6。
代码:
package com.amazon.digital.music.purchasing.scheduler.test;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.Logger;
import org.apache.log4j.spi.LoggingEvent;
/**
* A log appender which collects the log messages.
* Automatically appends itself to the root logger.
*
*/
class LogMessagesCollector extends AppenderSkeleton {
private final List<String> messages = new ArrayList<String>();
public LogMessagesCollector() {
final Logger logger = Logger.getRootLogger();
logger.addAppender(this);
}
@Override
public boolean requiresLayout() {
return false;
}
@Override
protected void append(final LoggingEvent loggingEvent) {
messages.add(loggingEvent.getMessage().toString());
}
@Override
public void close() {
final Logger logger = Logger.getRootLogger();
logger.removeAppender(this);
}
public List<String> getMessages() {
return messages;
}
我循着链接:How to Create a Custom Appender in log4j2?,以了解自定义追加器是如何在log4j 2中编写的,但无法编写一个类来替换这个类。
任何帮助都将是伟大的。提前感谢!
3条答案
按热度按时间xtupzzrd1#
请看一下log4j-core模块的单元测试中的ListAppender。它类似于在列表中收集日志事件。它有一些其他的特性来简化测试,但它可以作为自定义appender的一个很好的模板。
0wi1tuuw2#
遇到同样的问题。这里是自定义解决方案的模板
log4j2.properties
BasicAppender.java
p4tfgftt3#
这是你唯一能做的事
上述类的配置可以是log4j2.xml,将其放在资源文件夹中。