How do I configure log4j using log4j.xml to append to different log files based on class name?

后端 未结 2 1357
甜味超标
甜味超标 2020-12-13 19:21

I want to set up log4j so that all log meessages produced from classes under package com.foo.bar go to bar.log, and all the log meessages produced from classes under package

相关标签:
2条回答
  • 2020-12-13 19:35

    This is based on my answer to a similar question:

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

    If you add an appender-ref to the root element, it will also receive com.foo.bar etc messages. You can stop that by specifying 'additivity="false"' on the loggers.

    0 讨论(0)
  • 2020-12-13 19:55
      <root>
            <level value="INFO"/>
            <!-- no appender, output will be swallowed (I think) -->
      </root>
    

    We can add appenders here. It will work if the application is using root logger. for example quartz Scheduler API.

    0 讨论(0)
提交回复
热议问题