如何让log4j使用log4j.xml文件而不是在使用Spring时写入控制台?

时间:2014-09-11 17:35:20

标签: java spring logging log4j

我正在帮助一个有项目的朋友。他使用Spring;我不是。我给了他一个log4j.xml文件,用于启用日志记录到logs/子目录中的文件。他尝试了log4j.xml,但他的应用程序忽略了它(不会对其存在或不存在作出反应),将输出发送到控制台。看来Spring正在自动配置log4j来执行此操作。我们还尝试-Ddebug.log4j=true在涉及Spring时查找有关log4j初始化的更多信息,但该参数无效。

2 个答案:

答案 0 :(得分:2)

默认情况下,log4j不会对其配置做任何假设,它肯定需要配置文件或编程配置。

它会扫描log4j.propertieslog4j.xml的类路径。如果您更喜欢不同的路径和不同的名称,则需要传递类似的系统变量 -Dlog4j.configuration=relative_path_to_file.xml

答案 1 :(得分:0)

目前正在我们的项目中

我们使用下面的xml文件

<appender name="EvolutionWebASYNC" class="org.apache.log4j.AsyncAppender">
    <appender-ref ref="logFileOut" />
</appender>

<appender name="logFileOut" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="C:/home/wasadmin/applogs/myproject/myproject.log" />
    <param name="Append" value="true" />
    <param name="Threshold" value="ALL" />
    <param name="MaxFileSize" value="10MB" />
    <param name="MaxBackupIndex" value="5" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern"
            value="%d %-5p - [TXID: %X{TXID}] [UID: %X{UID}] [ORGOID: %X{ORGOID}] [UA_ORGOID: %X{UA_ORGOID}] - %m%n" />
    </layout>
</appender>

<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 %-5p - [TXID: %X{TXID}] [UID: %X{UID}] [ORGOID: %X{ORGOID}] [UA_ORGOID: %X{UA_ORGOID}] - %m%n" />
    </layout>
</appender>

<root>
    <level value="DEBUG" />
    <appender-ref ref="EvolutionWebASYNC" /> 
</root>

我希望它有所帮助!!!