2015-11-17 1 views
0

Попытка сделать обертку Logger, который регистрирует с правого расположенияLocationAwareLogger не признающие параметры

default LocationAwareLogger log() { 
    return (LocationAwareLogger) LoggerFactory.getLogger(this.getClass()); 
} 

default void logClick(final String message) { 
    log().trace(this.getClass().getName()); 
    log().log(null, 
       Loggable.class.getName(), 
       LocationAwareLogger.DEBUG_INT, 
       "{} click '{}'", 
       new Object[] { getContext().getName(), message }, null); 
} 

но когда он работает, это не признающий параметры

20151117 16:48:53,964 DEBUG [main] ClickClose[22]: {} click '{}' 

, что у меня есть, чтобы изменить заставить параметры работать?

Примечание: с помощью v1.6.1 и адаптер Log4j

ответ

0

так появляется ответ, что, по крайней мере нашей версия адаптера log4j, что он не делает форматирование сообщений, на самом деле первые и последние 2 аргументов полностью игнорируется этим методом. Я решил передать их в любом случае ... но это означает, что я должен напрямую позвонить в форматировщик.

Для всех, кто видит это в будущем, также представляется, что 2-й параметр не является классом происхождения журнала, но где в стеке вы хотите начать игнорировать для целей журнала, поэтому при регистрации изнутри интерфейса я хочу игнорировать класс, который является интерфейсом, если я выбрал this.getClass() Я заметил, что он регистрировался с 2 уровней над протоколом регистрации.

default void logClick(final String message) { 
    FormattingTuple tuple = MessageFormatter.arrayFormat(
     "{} click '{}'", new Object[] { getContext().getName(), message }); 
    log().log(null, 
       Loggable.class.getName(), 
       LocationAwareLogger.DEBUG_INT, tuple.getMessage(), 
       tuple.getArgArray(), tuple.getThrowable()); // last 2 args are ignored pass them anyways 
} 
Смежные вопросы