我有一个像这样配置的log4j RollingFileAppender
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="MaxBackupIndex" value="10" />
<param name="File" value="${java.io.tmpdir}\\myLogFile.log" />
</appender>
我的问题是java.io.tmpdir映射到C:\ Temp并且log4j没有转义反斜杠。 当我开始这个过程时,我看到以下错误
java.io.FileNotFoundException: c: emp\myLogFile.log (The filename, directory name, or volume label syntax is incorrect)
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.<init>(Unk
我无法在所有用户的计算机上修改环境变量,我也不想对日志路径进行硬编码。
我可以将自己的扩展名编写到RollingFileAppender来修复此问题,但我希望有一个预先存在的方法。
我最好的选择是什么?
答案 0 :(得分:2)
你试过这个吗?
<param name="File" value="${java.io.tmpdir}/myLogFile.log" />
您不需要在XML文件中转义反斜杠,并且log4j应该完全能够将该路径转换为您需要的任何特定于平台的路径(Windows上的反斜杠)。
答案 1 :(得分:1)
如果您使用属性文件而不是XML文件,则可能不会发生这种情况。查看log4j源代码,它接收DOMConfigurator正在进行导致错误的TAB替换。 PropertyConfigurator不执行此替换。试试吧?
您也可以将java.io.tmpdir更改为C:/ Temp并在适当的地方使用/而不是\。这听起来不像是你的选择吗?