簡體   English   中英

log4j-如何以編程方式從日志中排除某些類

[英]log4j - how to programatically exclude some classes from logging

我正在為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?

我嘗試使用過濾器,但它似乎不起作用。 如果有人可以指出正確的方向,那將非常有幫助。 干杯!

好吧..我找到了答案..我錯誤地實現了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,其中包含要忽略的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM