自定义转换器与log4j2和Mule无法正常工作

时间:2015-06-09 10:59:46

标签: java log4j mule log4j2

我正在尝试在mule应用程序中为log4j创建自定义转换器。我想将'%foo'放入模式布局中,并在java类中定义该输出。

我的转换器类看起来像这样:

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应用程序时,这都在mule.log文件中

ERROR Unrecognized format specifier [foo]

1 个答案:

答案 0 :(得分:0)

您可以改为使用log4j的MDC类(映射诊断上下文)。有关简明示例,请参见[此处](https://blog.oio.de/2010/11/09/logging-additional-information-like-sessionid-in-every-log4j-message/)。