当前位置: 首页 > 知识库问答 >
问题:

Log4j多模式布局

温智明
2023-03-14

我对log4j很陌生。我想用以下信息显示日志消息:日志时间戳、优先级、完全限定的类名、消息、仅类名。我尝试显示两次类别,一次使用转换模式,一次使用其他转换模式。这是我的log4j。属性:

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

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

弗朗西斯科

共有2个答案

韩夕
2023-03-14

那是我的错。正如你可以在我的先例文章中看到的,分隔符和模式布局指的是不同的附加程序。我改变

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-14

>

  • log4j。阿佩德。B1。布局ConversionPattern是这里的一个键,您只能将其与一个值关联。如果你这样写:

    
    Log4j.appender.B1.layout.ConversionPattern=%some%value%here
    Log4j.appender.B1.layout.ConversionPattern=%another%value%here
    

    您可以定义两个不同的附加程序,并将它们与所需的记录器相关联(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之间的唯一区别是appender的name和ConversionPattern属性。

  •  类似资料:
    • 尝试使用以下模式布局打印编码的日志消息,以便\n不会在日志中打印为新行。 但它实际上会在每条消息之前打印,并在消息末尾打印,而不是对它们进行编码。\n也没有被替换。 示例:对于此代码以下是输出日志 相反,它应该是这样的, 遵循了本文档https://logging.apache.org/log4j/log4j-2.1/manual/layouts.html,但我不确定该模式有什么问题。

    • 我希望输出日志消息的方式与使用bash“logger”命令的方式完全相同,但在Java中使用Log4j: 在尝试了许多不同的模式后,我无法再现相同的输出。知道怎么写这个图案吗? 谢谢你,

    • 我很感激你事先的帮助。 我使用root用户凭据在伪分布式模式下设置了Hadoop。我想为多个用户(比如hadoop1、hadoop2等)提供访问权限,以便能够在这个集群上提交和运行MapReduce作业。我们怎么做? 到目前为止我做了什么? 我得到了下面的错误: 为了克服此错误,我授予组“hadoop”对文件夹hdfstmp的rwx权限。此文件夹上的权限类似于drwxrwxr-x。 使用hadoo

    • 因为%C和%M是资源密集型的 %d{yyyy-MM-dd HH:MM:ss}[%C][%M][%t] 我希望%C和%M只有在日志级别设置为调试(或更详细的级别)时才有效。 log4j是否对这种条件输出格式有任何规定?

    • Fixed Layout vs Automatic Layout 固定布局 VS 自动布局 There are two different modes you can use to arrange and organize your GUIs: Fixed and Automatic. Up until now, every UnityGUI example provided in this gu

    • 关于我的“依赖关系报告”,我使用log4j 1.2.16。 我的转换模式是 但是无法识别,相反,日志行包含 任何想法?