Искам да създам обвивка около 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) методът и номерът на реда се губят, тъй като се извикват от различен метод
Това ще се използва широко във вътрешните ми приложения, така че искам да го направя както трябва. Добре ли е този подход или има по-добър?