Log4j多种模式布局

时间:2012-05-07 15:46:27

标签: log4j pattern-layout

我对log4j很新。我想显示带有这些信息的日志消息:日志时间戳,优先级,完全限定的类名,消息,类名。 我尝试显示两次CATEGORY,一次使用ConversionPattern,一次使用其他ConversionPattern。这是我的log4j.properties:

log4j.appender.JDBC2.layoutPartsDelimiter=#-#    
log4j.appender.B1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n #-#%-4r [%t] %-5p %c{1} %x %m%n

可悲的是它不起作用。如何仅在同一日志消息中显示完全限定的类名和类名? TIA。

弗朗西斯

2 个答案:

答案 0 :(得分:1)

  1. log4j.appender.B1.layout.ConversionPattern是一个关键,你可以 仅将其与一个值相关联。所以,如果你这样写:

    
    Log4j.appender.B1.layout.ConversionPattern=%some%value%here
    Log4j.appender.B1.layout.ConversionPattern=%another%value%here
    
    后面的值只会覆盖前一个

  2. 您可以定义两个不同的appender并将它们与 你想要的记录器(以rootLogger为例):

    
    log4j.rootLogger=debug,console,console2
    
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.target=System.err
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern= %p %C (%F:%M(%L)) -
    %m%n
    
    log4j.appender.console2=org.apache.log4j.ConsoleAppender
    log4j.appender.console2.target=System.err
    log4j.appender.console2.layout=org.apache.log4j.PatternLayout
    log4j.appender.console2.layout.ConversionPattern= %p %c{1}
    (%F:%M(%L)) - %m%n 

    注意:两个appender之间的唯一区别是 appenders的名称和ConversionPattern属性。

  3. 可以找到有关log4j的更详细讨论Short introduction to log4j

答案 1 :(得分:0)

这是我的错。正如您在我的先例帖子中看到的,Delimiter和PatternLayout指的是不同的appender。我改变了

log4j.appender.JDBC2.layoutPartsDelimiter=#-#    
log4j.appender.B1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n #-#%-4r [%t] %-5p %c{1} %x %m%n

进入这个:

log4j.appender.B1.layoutPartsDelimiter=#-#    
log4j.appender.B1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n #-#%-4r [%t] %-5p %c{1} %x %m%n

一切正常,当我使用@LAYOUT时:1 @我得到了第一个ConversionPattern(分隔符# - #左边)。当我使用@LAYOUT:2 @我得到了第二个模式。谢谢。

弗朗西斯