有没有办法在使用log4j2时为不同的包使用不同的模式?

时间:2018-04-03 17:19:32

标签: java log4j slf4j

我使用log4j(通过slf4j),我喜欢从某些包中输出文件名和行号的日志,但对于其他人我只需要级别和消息。有没有办法实现这个目标?是否可以使用log4j2.properties文件为不同的类/包特定不同的layout.ConversionPattern?

1 个答案:

答案 0 :(得分:1)

您可以使用多个相同类型的appender:

以下是一个例子:

<Appenders>
    <Console name="ConsoleA" target="SYSTEM_OUT">
         <PatternLayout pattern=="%-4r [%t] %-5p %c %x - %m%n" />
    </Console>
    <Console name="ConsoleB" target="SYSTEM_OUT">
         <PatternLayout pattern=="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
   </Console>
</Appenders>

<Loggers>
   <Logger name="com.foo.BarA" level="trace">
      <AppenderRef ref="ConsoleA"/>
   </Logger>
   <Logger name="com.foo.BarB" level="trace">
     <AppenderRef ref="ConsoleB"/>
   </Logger>
</Loggers>

Log4J configuration manual

了解详情