gpt4 book ai didi

java - log4j - 如何以编程方式从日志记录中排除某些类

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:42 25 4
gpt4 key购买 nike

我正在为 Log4J 编写一个自定义套接字附加器,它在运行时附加自身。到目前为止我的代码如下,

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?

我尝试使用过滤器,但似乎不起作用。如果有人能指出我正确的方向,那将非常有帮助。干杯!

最佳答案

嗯..我找到了答案..我错误地实现了过滤器类。我没有发出“拒绝”,而是发出“中立”。下面的代码现在对我来说效果很好,

        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。

关于java - log4j - 如何以编程方式从日志记录中排除某些类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25729467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com