2016-07-26 51 views
0

我想使用log4j的记录它的文件 这里是代码log4j的尝试登录文件

protected static Logger logger = Logger.getLogger(Application.class); 
    private static final String DIRECTORY = "/Users/me/Desktop"; 
    private static final String EXTENSION = ".log"; 

    protected void setupLogger(String fileName) { 
     SimpleLayout layout = new SimpleLayout(); 
     FileAppender appender = new FileAppender(layout, DIRECTORY + "/logs/" + fileName + EXTENSION, false); 
     logger.addAppender(appender); 
     logger.setLevel((Level) Level.DEBUG); 
    } 

,并在这里是POM中,我使用http://pastebin.com/vXdFtzSU

,我的堆栈跟踪得到的是这里

Error:(40, 28) java: incompatible types: org.apache.log4j.FileAppender cannot be converted to org.apache.log4j.Appender 

我想按照这个答案configure log4j to log to custom file at runtime

+0

can you s你的导入声明如何 – Raghu

+0

import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; import org.apache.log4j.FileAppender; –

+0

尝试从下面的命令mvn dependency:tree中找出依赖关系树,并将其发布到此处。有一个log4j jars.i的版本冲突,我认为你需要从其他工件依赖中排除log4j。 –

回答

2

嗨尝试了变化Maven的依赖性增加这种依赖性:

<dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 

,改变弹簧启动依赖排除日志依赖关系:

 <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
      <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-logging</artifactId> 
      </exclusion> 
      </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
      <exclusions> 
     <exclusion> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-logging</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 

再加入try/catch语句:

protected void setupLogger(String fileName) { 

     try { 
      SimpleLayout layout = new SimpleLayout(); 
      FileAppender appender; 
      appender = new FileAppender(layout, DIRECTORY + "/logs/" +  fileName + EXTENSION, false); 
      logger.addAppender(appender); 
      logger.setLevel((Level) Level.DEBUG); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
+0

仍然是相同的错误 –

+1

检查我的答案更新 –

+0

现在文件保存在我指定的路径,但我从setFile http: //pastebin.com/FZ6nmTeY –

0

它几乎看起来像在运行时使用不同版本的libraray,而不是在编译时。如果这些类型真的不兼容会导致编译器错误。如果您正在像Tomcat等特殊环境中运行程序,请检查是否安装了相同版本的log4j。

0

为什么不使用log4j.properties这是一个非常简单的配置打印到文件。

log4j.logger.register=INFO,R7 
log4j.appender.R7=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.R7.DatePattern='.'yyyyMMdd 
log4j.appender.R7.File=/appLogs/address/logFile.log 
log4j.appender.R7.layout=org.apache.log4j.PatternLayout 
log4j.appender.R7.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss} | %m%n 


private static final Logger logger = Logger.getLogger("register"); 

logger.info("print to file and console"); 
+0

我已经试过,但它不读我的属性。这里的属性http://pastebin.com/Y8JKCuTY也许是因为春天 –