2014-06-26 71 views
0

我想圍繞log4j2做一個包裝,做下面的事情: 1)有大約6個必需的字段,如event_name,action,desc等 2)有些領域,我想讓他們只使用某些值,如枚舉 3)日誌應該在Splunk的鍵值對中創建。log4j2的自定義包裝

下面是我的方法: 1)創建了一個名爲CustomLogger accepeting強制字段,記錄器和可變字段作爲關鍵值類 2)用戶可以調用諸如下面的方法:

CustomLogger.info(logger, transactionId, app_name, event_name, 
       "inside the loop", "inside the loop of the sample app", 
       CustomLogger.Result.success, "looped in", "loop_count", 
       String.valueOf(i)); 

方法定義:

public static String log(LogLevel logLevel, Logger logger, 
     String transactionId, String app_name, String event_name, 
     String action, String desc, Result result, String reason, 
     String... addtnlFields) 

與方法問題: 1)不延長log4j的,不知道這是正確的方式 2)需要通過從E記錄儀很上課。如果可以避免的話 3)方法和行號會因爲從不同的方法調用而丟失

這將在我的內部應用程序中被廣泛使用,所以想要做到這一點。這種方法好嗎還是有更好的方法?

回答

1

看看附於本吉拉代碼生成器:https://issues.apache.org/jira/browse/LOG4J2-519

也許你可以使用它作爲一個基類?給你一個更好的API。 (我還需要更新這反映的log4j-2.0-RC2一些API的變化......)


UPDATE

一種不同的方法是有定義的消息界面的自定義實現log4j2 api模塊。您的自定義消息將有一個構造函數,其中包含您根據需要定義的所有字段,並且toString方法(也可能包括其他一些方法)會根據需要將這些字段格式化爲鍵值對。

+0

已經提出了票Log4j 2LOG4J2-695 https://issues.apache.org/jira/browse/LOG4J2-695 – Sibish

+0

非常感謝Remko和Ralph回答所有問題並通過Splunk爲log4j2提供自定義記錄器解決方案CIM。吉拉票有所有細節:https://issues.apache.org/jira/browse/LOG4J2-695 – Sibish