簡體   English   中英

如何為Log4J使用兩個不同的XML配置文件

[英]How To Use Two Different XML-Configuration-Files For Log4J

我有兩個XML配置文件。 一個用於我的Java Jersey WebService,另一個用於我的數據訪問對象(= DAO;通過JDBC的MySQL-DB)。 當我運行應用程序時,日志被分隔在兩個不同的文件夾中,但是日志文件彼此相同。

我該如何避免呢?

DAO的XML配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
  xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <!-- CONSOLE -->    
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" 
            value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
    </appender>

    <!-- ERROR LOG INTO FILE -->
    <appender name="dberr" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="true" />
        <param name="maxFileSize" value="5MB" />
        <param name="maxBackupIndex" value="5" />
        <param name="file" value="logs/database/errlog.log" />
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" 
            value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="ERROR" />
            <param name="LevelMax" value="FATAL" />
        </filter>
    </appender>

    <!-- STANDARD LOG INTO FILE -->
    <appender name="dbstd" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="true" />
        <param name="maxFileSize" value="5MB" />
        <param name="maxBackupIndex" value="5" />
        <param name="file" value="logs/database/std.log" />
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" 
            value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="INFO" />
            <param name="LevelMax" value="WARN" />
        </filter>
    </appender>

    <!-- DEBUG LOG INTO FILE -->
    <appender name="dbdebug" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="true" />
        <param name="maxFileSize" value="5MB" />
        <param name="maxBackupIndex" value="5" />
        <param name="file" value="logs/database/debug.log" />
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" 
            value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG" />
            <param name="LevelMax" value="DEBUG" />
        </filter>
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="dberr" />
        <appender-ref ref="dbstd" />
        <appender-ref ref="dbdebug" />
    </root>

</log4j:configuration>

WebService的XML配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
  xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <!-- CONSOLE -->    
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" 
            value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
    </appender>

    <!-- ERROR LOG INTO FILE -->
    <appender name="wserr" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="true" />
        <param name="maxFileSize" value="5MB" />
        <param name="maxBackupIndex" value="5" />
        <param name="file" value="logs/webservice/errlog.log" />
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" 
            value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="ERROR" />
            <param name="LevelMax" value="FATAL" />
        </filter>
    </appender>

    <!-- STANDARD LOG INTO FILE -->
    <appender name="wsstd" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="true" />
        <param name="maxFileSize" value="5MB" />
        <param name="maxBackupIndex" value="5" />
        <param name="file" value="logs/webservice/std.log" />
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" 
            value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="INFO" />
            <param name="LevelMax" value="WARN" />
        </filter>
    </appender>

    <!-- DEBUG LOG INTO FILE -->
    <appender name="wsdebug" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="true" />
        <param name="maxFileSize" value="5MB" />
        <param name="maxBackupIndex" value="5" />
        <param name="file" value="logs/webservice/debug.log" />
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" 
            value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG" />
            <param name="LevelMax" value="DEBUG" />
        </filter>
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="wserr" />
        <appender-ref ref="wsstd" />
        <appender-ref ref="wsdebug" />
    </root>

</log4j:configuration>

這就是我所說的Log4J:

Logger log  =   Logger.getLogger(DAO.class);
DOMConfigurator.configure("C:\file\path\to\config.xml");

我想要從文件夾中的DAO中獲得日志olny的日志文件,並希望獲得WebService的等效文件。 我有什么不好?

我將兩個文件合並為一個XML文件。 我需要做的是:

    <logger name="webservice_container">
        <appender-ref ref="wserr" />
        <appender-ref ref="wsstd" />
    </logger>

    <logger name="db_container">
        <appender-ref ref="dberr" />
        <appender-ref ref="dbstd" />
    </logger>

    <root>
        <level value="DEBUG" />
    </root>

現在,我有一個文件,其中包含Log4J的所有配置,分別在2個不同的文件夾和4個不同的文件中進行登錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM