我在主题中一直在努力解决这个问题。
我试过这样的事情:
String sCurrDir = System.getProperty("user.dir");
int nLastBSlash = sCurrDir.lastIndexOf('/');
System.setProperty("current.folder", sCurrDir.substring(nLastBSlash + 1));
并将以下内容添加到log4j.properties:
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="DEBUG" />
<param name="append" value="true" />
<param name="maxFileSize" value="10MB" />
<param name="maxBackupIndex" value="50" />
<param name="File" value="./log/${current.folder}-wcss-simulator-${current.date}.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS}\t %-5p\t [%X{ThreadId}]\t %X{MethodName}\t - %m%n" />
</layout>
</appender>
但文件名只以连字符开头。
答案 0 :(得分:1)
您的实施不起作用,因为日志之前已经开始 设置current.folder
属性。您是否可以访问该程序的main
方法,或者这是一个基于容器的应用程序?
如果您有权访问main
方法,则必须确保在创建第一个Logger
实例之前,首先要设置该属性。
答案 1 :(得分:0)
你可以尝试实现自己的Appender,如:
LinkedList<String> month = buildMonth(i);
for (String s : month) {
System.out.println(s + " ");
将log4j属性/ xml文件配置为:
import org.apache.log4j.RollingFileAppender;
public class CustomFileAppender extends RollingFileAppender {
public CustomFileAppender() {
super();
String sCurrDir = System.getProperty("user.dir");
int nLastBSlash = sCurrDir.lastIndexOf('/');
System.setProperty("current.folder", sCurrDir.substring(nLastBSlash + 1));
}
}