【问题标题】:Log4j multiple pattern layoutLog4j 多模式布局
【发布时间】:2023-03-13 03:53:01
【问题描述】:

我对 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。

弗朗西斯科

【问题讨论】:

    标签: log4j pattern-layout


    【解决方案1】:
    1. log4j.appender.B1.layout.ConversionPattern 是这里的关键,你可以 仅将其与一个值相关联。所以,如果你这样写:

      
      Log4j.appender.B1.layout.ConversionPattern=%some%value%here
      Log4j.appender.B1.layout.ConversionPattern=%another%value%here
      
      后面的值会覆盖前面的值
    2. 您可以定义两个不同的附加程序并将它们与 你想要的logger(以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 的名称和 ConversionPattern 属性。

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

    【讨论】:

      【解决方案2】:

      这是我的错。正如您在我之前的帖子中看到的那样,Delimiter 和 PatternLayout 指的是不同的附加程序。我改变了

      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@ 时,我得到了第二个模式。谢谢。

      弗朗切斯科

      【讨论】:

        猜你喜欢
        • 2023-03-17
        • 2016-12-28
        • 1970-01-01
        • 2019-09-05
        • 2018-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多