如何使用log4j.xml配置log4j,以便根据类名附加到不同的日志文件?

如何使用log4j.xml配置log4j,以便根据类名附加到不同的日志文件?,log4j,Log4j,我想设置log4j,以便从包com.foo.bar下的类生成的所有日志Meessage转到bar.log,从包com.bar.blatz下的类生成的所有日志Meessage转到blatz.log 问题 如何使用log4j.xml实现这一点 我知道可以使用属性文件,但是如何使用XML配置呢 这是基于我对类似问题的回答: <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log

我想设置log4j,以便从包com.foo.bar下的类生成的所有日志Meessage转到bar.log,从包com.bar.blatz下的类生成的所有日志Meessage转到blatz.log

问题
  • 如何使用log4j.xml实现这一点
  • 我知道可以使用属性文件,但是如何使用XML配置呢
    • 这是基于我对类似问题的回答:

      <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
      <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
          <!-- general application log -->
          <appender name="BarLogFile" class="org.apache.log4j.FileAppender">
              <param name="File" value="bar.log" />
              <param name="Threshold" value="INFO" />
              <layout class="org.apache.log4j.PatternLayout">
                  <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
              </layout>
          </appender> 
      
          <!-- additional fooSystem logging -->
          <appender name="BlatzLogFile" class="org.apache.log4j.FileAppender">
              <param name="File" value="blatz.log" />
              <layout class="org.apache.log4j.PatternLayout">
                  <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
              </layout>
          </appender>
      
          <logger name="com.foo.bar">
              <appender-ref ref="BarLogFile"/>
          </logger>
      
          <logger name="com.bar.blatz">
              <appender-ref ref="BlatzLogFile"/>
          </logger>
      
          <root>
              <level value="INFO"/>
              <!-- no appender, output will be swallowed (I think) -->
          </root>
      </log4j:configuration>
      
      
      
      如果向根元素添加appender ref,它还将接收com.foo.bar等消息。您可以通过在记录器上指定“additivity=“false”来停止此操作。

      
      
        <root>
              <level value="INFO"/>
              <!-- no appender, output will be swallowed (I think) -->
        </root>
      

      我们可以在这里添加appender。如果应用程序正在使用根记录器,它将工作。例如quartz Scheduler API。

      …这是一个更好的方法。