Персонализирана обвивка за log4j2

Искам да създам обвивка около log4j2, за да направя следното: 1) Има около 6 задължителни полета като event_name, action, desc и т.н. 2) Някои полета, искам да ги накарам да използват само определени стойности, като enum 3) log трябва да бъде създадени в двойки ключови стойности за Splunk.

По-долу е моят подход: 1) Създадох клас, наречен CustomLogger, приемайки задължителните полета, логера и променливите полета като ключова стойност 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) Трябва да преминете регистратора от всеки клас. Ако това може да се избегне 3) методът и номерът на реда се губят, тъй като се извикват от различен метод

Това ще се използва широко във вътрешните ми приложения, така че искам да го направя както трябва. Добре ли е този подход или има по-добър?


person Sibish    schedule 26.06.2014    source източник


Отговори (1)


Разгледайте генератора на кодове, прикачен към този Jira: https://issues.apache.org/jira/browse/LOG4J2-519

Може би можете да използвате това като основен клас? Дава ви малко по-добър API. (Все още трябва да актуализирам това, за да отразя някои промени в API в log4j-2.0-rc2...)


АКТУАЛИЗИРАНЕ

Различен подход е да имате персонализирана реализация на интерфейса за съобщения, дефиниран в модула log4j2 API. Вашето персонализирано съобщение ще има конструктор с всички полета, които дефинирате като необходими, и методът toString (и може би някои други методи също) ще форматират тези полета, както изисквате, в двойки ключ-стойност.

person Remko Popma    schedule 27.06.2014
comment
са повишили билета Log4j 2LOG4J2-695 issues.apache.org/jira/browse/LOG4J2- 695 - person Sibish; 01.07.2014
comment
Благодаря много на Remko и Ralph, че отговориха на всички въпроси и предоставиха решението за Custom Logger през log4j2 със Splunk CIM. Билетът на Jira съдържа всички подробности: issues.apache.org/jira/browse/LOG4J2-695 - person Sibish; 13.07.2014