Есть ли способ написать L.e (...) вместо Logger.getLogger (getClass ()). Error (...)?
// A foolish simple implementation
public class L {
public static void e(String msg) {
Logger.getLogger(L.class).error(msg);
}
}
Основные проблемы, с которыми приходится сталкиваться, - это фильтрация и номера строк. Если кто-то добавляет фильтр в файл конфигурации log4j, он должен применяться так же, как если бы я вызывал метод Logger.getLogger (getClass ()) из исходного класса. Это означает, что переданный объект класса должен быть извлечен из трассировки стека. Я думаю, что это выполнимо. Я бы просто сделал "new Throwable ()", затем вызвал fillStackTrace и затем переместился по нему, чтобы получить информацию о вызывающем методе.
Во-вторых, и, возможно, трудно изменить без непосредственного изменения кода Log4j, номер строки, выводимый регистратором, должен быть номером строки метода, вызывающего L.e (msg), а не номером строки внутри этого метода.
Какие-нибудь предложения по решению этих проблем?