Converting log4j.properties to log4j.xml [duplicat

2020-03-25 16:06发布

问题:

I couldn't find anywhere how to specify constants in log4j.xml. For example, I have this constant in my log4j.properties:

#Log directory
dal.log.dir=/var/log/pojodal/
# Log filename
dal.log.file=pojodal.log

And I use these constants as follows, in other parts of the properties file:

log4j.appender.DRFA1.File=${dal.log.dir}/${dal.log.file}

How to achieve the same behavior in log4j.xml?

回答1:

You can convert your complete log4j.properties using this online service, where you can paste your log4j.properties, press convert and copy your new log4j.xml:

http://log4j-props2xml.appspot.com/

If that webapp is offline ... you can also start it in your own servlet container ... you find downloads and sources here:

https://github.com/jroyals/log4j-properties-converter/

Use of variables in log4j.xml:

This is explained in an answer to another question ... using XML internal entities here and using Java System Properties here.



回答2:

You can set the log file location and name as a parameter element in the log4J xml

<param name="File" value="C:\\logs\\application\\ApplicationLog.log" />

Example file below:

<log4j:configuration>
    <appender name="STDOUT" class="org.apache.log4j.RollingFileAppender">
        <param name="File"     value="C:\\logs\\application\\ApplicationLog.${user.name}.log" />
        <param name="MaxFileSize" value="5000KB" />
        <param name="MaxBackupIndex" value="10" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
        value="[%d{yyyy-MMM-dd HH:mm:ss}] [%t] %-5p %c{1}: %m %n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG"/>
            <param name="LevelMax" value="FATAL"/>
        </filter>
    </appender>

    <root>
        <level value="all" />
        <appender-ref ref="STDOUT"/>
    </root>
</log4j:configuration>