您好,我正在使用 log4j api 来记录信息。我使用 log4j_config.xml 文件来创建日志文件。我已经在参数标记值中给出了每个日志文件的绝对路径。
例如:
appender name="GPREPROCESSOR_DEBUG" class="org.apache.log4j.DailyRollingFileAppender"><br>
param name="DatePattern" value="'_'yyyyMMdd"/><br>
param name="File" value="D:/logFiles/GPreprocessor_Debug.log"/><br>
layout class="com.dnb.genericpreprocessor.common.log.AppXMLLayout"/><br>
/appender><br>
我不想直接给出“D:/logFiles/”。实际上,该路径是根据我的项目位置动态的。那么我该如何给出呢
最佳答案
任何 Java 系统属性都可以在 log4j 配置文件中使用。例如,您的应用程序在启动时可以执行以下操作:
String directory = "logfiles"; // relative to "." try { path = new File(directory).getCanonicalPath(); } catch (IOException e) { // Cannot use log4j yet, so complain to system out System.out.println("Could not get canonical path for " + directory, e); } System.setProperty("log.home", path); // Now that we've configured log.home, start logging DOMConfigurator.configureAndWatch("log4j_config.xml");
然后在您的 log4j 配置文件中正确使用它,例如:
<param name="File" value="${log.home}/GPreprocessor_Debug.log"/>
这样做的唯一缺点是您必须在初始化 log4j 日志记录之前定义系统属性。当然,你也可以在Java命令行中通过“-Dlog.home=D:/logFiles”来定义这些参数,这样更方便。
关于java - 如何在 log4j_config.xml 的appender标签中给出动态文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/472715/