Расширьте PatternLayout для пользовательского заголовка в log4j2 - PullRequest
0 голосов
/ 25 апреля 2019

Мне нужно перезаписать функцию "getHeader ()" из PatternLayout Log4j2.Заголовок - это не просто статическая строка, поэтому я не могу просто использовать свойства "header" в конфигурации.Мне нужно вызывать функцию во время выполнения, чтобы получить информацию о состоянии и добавить ее в заголовок.

Я уже пытался привести пример расширения PatternLayout безуспешно.Даже примеры в официальной документации log4j не работают.В Logback было намного проще расширить функцию «getHeader ()», и она работала нормально.

Я пробовал это с поиском и свойством заголовка в Patternlayout, который работает в целом, но никогда не будетобновите значение при переходе файлов.

1 Ответ

0 голосов
/ 26 апреля 2019

Теперь я могу решить эту проблему с помощью поиска: log4j2.yml:

PatternLayout:
      Pattern: "%date{yyyy-MM-dd HH:mm:ss.SSS}{UTC}; %msg; %level; %logger; %class; %method; %thread; [%file:%line]%n"
      Header: $${headerlookup:header}

Плагин поиска:

@Plugin(name = "headerlookup", category = StrLookup.CATEGORY )
public class IONLog4j2HeaderLookup extends AbstractLookup {

/**
 * Lookup the value for the key using the data in the LogEvent.
 * @param event The current LogEvent.
 * @param key  the key to be looked up, may be null
 * @return The value associated with the key.
 */
@Override
public String lookup(final LogEvent event, final String key) {
    return new IONLogLayout().getFileHeader();
}

}

Не забудьте "$$ ", чтобы прочитать значение во время выполнения.

...