log4j记录式日志

时间:2011-05-25 13:53:20

标签: java logging log4j

我希望log4j产生类似记录的输出。

我不想要的:

1    INFO  ... - User login: Agostino
120  INFO  ... - Start process: 0, elements to process 100

我想要的是什么:

1    INFO ... - User: Agostino, processid:null, elements: null, message: login
1    INFO ... - User: Agostino, processid:0, elements: 100, message: start process

我想我应该使用ObjectRenderer,因为很多数据都包含在我已经拥有的对象中,所以我认为如下:

public class MyMessage {
    Object myContextObject; //**this** contains user, processid, elements
    String message;
}

我在这里做的是传递一个"上下文对象"提供字段PLUS消息字符串。然后,ObjectRenderer将根据myContextObject类型进行格式化。

现在我想知道ObjectRenderer是否设计了这样的东西。 如果这是ObjectRenderer的正常使用,可能他们提供了一个 log(String message,Object myContextObject),它阻止创建虚拟包装器M​​yMessage。

1 个答案:

答案 0 :(得分:1)

作为ObjectRenderer的替代方案,您可能需要查看log4j的PatternLayout,它可以通过编程方式配置,也可以配置为:

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

例如,你可以做这样的事情(只是一个任意的例子):

<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d %-5p (%-35F:%-4L) - %m%n"/>
  </layout>
</appender>

确定后,您可以使用%X{clientNumber}模式通过MDC从自定义类中检索数据

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/MDC.html