Я пытаюсь создать собственный конвертер для log4j в приложении mule. Я хочу поместить «% foo» в макет шаблона и определить этот вывод в классе java.Пользовательский конвертер с log4j2 и Mule не работает
Мой класс преобразования выглядит следующим образом:
package my.package
@Plugin(name = "MyConverter", category = "Converter")
@ConverterKeys(["foo"])
public final class MyConverter extends LogEventPatternConverter {
protected MyConverter(String name, String style) {
super(name, style)
}
public static MyConverter newInstance(final String[] options) {
return new MyConverter("foo", "foo");
}
@Override
public void format(LogEvent arg0, StringBuilder arg1) {
arg1.append("hello")
}
}
Мой log4j2.xml выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration verbose="true" packages="my.package">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%-5p [%t] %c: %m%n"/>
</Console>
<File name="mylog" fileName="${env:MULE_HOME}/logs/mylog.log">
<PatternLayout pattern="%-4p %d [%t] [%foo] %c: %m%n"/>
</File>
</Appenders>
...
Все я получаю, когда я начинаю свой мул приложение это в mule.log файл
ERROR Unrecognized format specifier [foo]
Я думаю, что MDC использует ThreadLocal для хранения Карты для текущих потоков. Это проблема, поскольку Mule запускает несколько потоков (например: Scatter-Gather), которые не используют один и тот же TheadContext. – luhuec