Я хочу создать оболочку вокруг log4j2, чтобы сделать следующее: 1) есть около 6 обязательных полей, таких как event_name, action, desc и т. д. 2) некоторые поля, я хочу, чтобы они использовали только определенные значения, например enum 3) журнал должен быть создается в парах ключ-значение для 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) метод и номер строки теряются, так как он вызывается из другого метода
Это будет широко использоваться в моих внутренних приложениях, поэтому хочу сделать это правильно. Подходит ли этот подход или есть лучший подход?