如何将当前客户端目录添加到日志文件名?

时间:2017-05-25 11:18:25

标签: java log4

我在主题中一直在努力解决这个问题。

我试过这样的事情:

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>

但文件名只以连字符开头。

2 个答案:

答案 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));
        }
    }