我正在为Log4J编写一个自定义套接字appender,它在运行时自行附加。我到目前为止的代码如下,
Logger rootLogger = Logger.getRootLogger();
SocketAppender socketAppender = new SocketAppender(server, port);
socketAppender.setReconnectionDelay(60000);
socketAppender.setThreshold(Level.DEBUG);
socketAppender.setName("server-socket");
rootLogger.addAppender(socketAppender);
服务器&端口定义正确。我正在使用Struts2,所以我从freemarker.beans和freemarker.cache这样的类中获取了无用日志(对我来说)的日志。如何从登录Socket Appender上面过滤这些类?
我尝试使用过滤器,但它似乎不起作用。如果有人能指出我正确的方向,那将是非常有帮助的。干杯!
答案 0 :(得分:1)
嗯..我找到了答案..我错误地实现了Filter类。我没有发现DENY,而是发送了NEUTRAL。以下代码现在可以正常使用,
SocketAppender socketAppender = new SocketAppender(server, port);
socketAppender.setReconnectionDelay(60000);
socketAppender.setThreshold(Level.DEBUG);
socketAppender.setName("server-socket");
socketAppender.addFilter(new Filter() {
@Override
public int decide(LoggingEvent loggingEvent)
{
if(ignoreLogsFromClasses.contains(loggingEvent.categoryName))
{
return -1;
}
return 0;
}
});
rootLogger.addAppender(socketAppender);
其中ignoreLogsFromClasses是一个包含要忽略的类的Set。