我正在为我的项目使用自定义记录器,例如。类 MyLogger。 这样我就可以正确记录消息但它没有记录 从日志启动的地方正确的类和方法名称。
所以我想我们可能需要在 log4j.xml 中指定 MyLoggger 但我不知道 在哪里以及如何?
感谢所有建议。 谢谢。
最佳答案
如果你有一个 MyClass 类:
package com.acando.norolnes;
public class MyClass {
public String foo;
public int bar;
}
你想在日志记录时自定义格式,你可以创建一个自定义的ObjectRenderer:
package com.acando.norolnes;
import org.apache.log4j.or.ObjectRenderer;
public class MyClassRenderer implements ObjectRenderer {
@Override
public String doRender(Object arg0) {
if(arg0 instanceof MyClass) {
MyClass m = (MyClass)arg0;
return "("+m.foo+" "+m.bar+")";
}
return arg0.toString();
}
}
然后像这样在配置中使用 -element 链接它:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<renderer renderedClass="com.acando.norolnes.MyClass"
renderingClass="com.acando.norolnes.MyClassRenderer"/>
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n"/>
</layout>
</appender>
<root>
<priority value="debug"></priority>
<appender-ref ref="stdout"/>
</root>
</log4j:configuration>
有关更完整的示例,请查看 http://www.java2s.com/Code/Java/Language-Basics/log4jAcompleteexample.htm
关于java - 如何在 log4j.xml 文件中指定自定义/扩展记录器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5078561/