2011-09-24 59 views
2

我們的中間件團隊將記錄器名稱分配給每個應用程序,這就是他們如何知道將套接字appender指向何處的方式。Log4j將所有記錄器映射到單個記錄器

我想使用標準的Logger.getLogger(Clazz.class)範例,但不符合上述約束條件。此外,我們不能將庫語句記錄到我們的套接字appender中,這會派上用場。

是否有一種相當無痛的方式來映射從所有記錄器到這個中間件分配記錄器的所有內容?

我認爲我們的中間件組搞亂了企業日誌系統的配置。看起來應該使用SocketAppender上的setApplication屬性。無論如何,這是我們必須處理的......

回答

1

您希望將您的「常規」記錄器的輸出直接重定向到「中間件記錄器」,即不需要在所有「常規」中設置中間件記錄器的appender 「記錄員,對吧?

如果是這種情況,請嘗試編寫自己的appender:

class MiddlewareRedirectingAppender extends AppenderSkeleton { 
    private Logger middlewareLogger = Logger.getLogger("your 'middleware' logger name"); 

    public void doAppend(LoggingEvent event) { 
     // implement whatever filtering, etc. you want 
     middlewareLogger.log(...); 
    } 
} 

裝上此附加目的地爲您的「常規」伐木工人,或者只是根記錄器(取決於你的「中間件」記錄的行爲) 。

聲明:這只是一個鬆散的想法,我沒有測試過它。