java如何在Log4j中为每次运行生成唯一的文件名
我在项目中使用log4j来使用生成的日志进行故障分析。我在每次创建新文件时都遇到问题,因为它不工作。我的要求是创建以下格式的文件名
Filename_<DDMMYYYY_HHMMSS>
每次运行脚本时。但我已经尝试了来自网络的多个代码,但都不适合我。通过使用下面的xml和脚本在文件文件夹中生成一个文件,在所有运行过程中使用相同的文件。请帮助我生成一个新的文件,每次与xml如下
使用的XML
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<!-- For Printing message with date , time & class name also-->
<param name="ConversionPattern" value="[%d{dd MMM yyyy HH:mm:ss}] %5p[%c{1}]: %m%n"/>
<!-- For printing message only
<param name="ConversionPattern" value="%-5p[%c{1}]: %m%n"/>-->
</layout>
</appender>
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="false"/>
<param name="file" value="MyApp_%d{ddMMyyyy_HHMMSS}_MyApp.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd-MM-yyyy HH:mm:ss}%x %-5p[%c{1}]: %m%n"/>
</layout>
<rollingPolicy class="org.apache.log4j.rolling.FixedWindowRollingPolicy">
<param name="activeFileName" value="MyApp_%d{ddMMyyyy_HHMMSS}.log"/>
<param name="fileNamePattern" value="MyApp_%d{ddMMyyyy_HHMMSS}_MyApp.log"/>
<param name="minIndex" value="0"/>
<param name="maxIndex" value="5"/>
</rollingPolicy>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="consoleAppender"/>
<appender-ref ref="fileAppender"/>
</root>
</log4j:configuration>
错误
log4j:WARN Continuable parsing error 25 and column 12
log4j:WARN The content of element type "appender" must match "(errorHandler?,param*,rollingPolicy?,triggeringPolicy?,connectionSource?,layout?,filter*,appender-ref*)".
log4j:WARN Unrecognized element rollingPolicy
很抱歉将xml附加到HTML中
# 1 楼答案
我们可以通过多种方式做到这一点。但是我发现用XML进行设置很容易。我们需要在脚本中通过下面的行设置变量值
通过上面的代码,我们将能够在xml中为变量
logfilename
设置一个动态值。因此,当脚本创建对象时,它将使用以下行创建一个新文件名已使用修改的XML
所以这段代码将为每次运行生成一个新的文件名。。。感谢大家为编写此代码所做的努力