Исходя из нашего обсуждения в комментариях, похоже, что на самом деле вы ищете информацию о местоположении .В пользовательском приложении это можно получить, пройдя трассировку стека, предоставленную LogEvent.getSource()
.Вы должны знать, что получение этой информации стоит дорого (см. Документацию ).
Редактировать
Как выКак уже говорилось, информация о местоположении может быть очень полезной, поэтому обидно, что ее дорого получить.К сожалению, Log4J ничего не может с этим поделать - это зависит от архитектуры java.
Один более дешевый метод, который обычно используется для получения хотя бы имени класса, состоит в том, чтобы гарантировать, что Logger
, в который выполняется вход, назван в честькласс, в котором он используется (см. документацию здесь ).Затем вы можете получить имя класса в приложении, позвонив по номеру LogEvent.getLoggerName()
.Однако обратите внимание, что если вы пишете общую реализацию Appender
, которая может быть повторно использована в нескольких проектах, было бы плохой практикой предполагать , что это всегда будет именем вызывающего класса.Вместо этого его следует интерпретировать как «функциональный контекст, из которого поступил вызов регистрации, как определено приложением».