首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileAppender打开FileHandle,但从不记录

FileAppender打开FileHandle,但从不记录
EN

Stack Overflow用户
提问于 2012-07-02 20:15:40
回答 1查看 151关注 0票数 1

在我的当前项目中,我需要做一个特定的任务,创建自己的日志文件,与在log4j.properties中配置的日志文件分开。

我试图通过将动态创建的FileAppender附加到rootLogger来实现这一点:

代码语言:javascript
复制
public static void setupAnalysisLogfile(String filename) {
  PatternLayout layout 
           = new PatternLayout("%d{dd MMM yyyy HH:mm:ss,SSS} [%t] %-5p %C{1} %x - %m%n");
  if(Config.CREATE_SEPERATE_LOG)
  {
     FileAppender appender;
     try {
       String path = (Config.LOGFILE_PATH!=null)?Config.LOGFILE_PATH:filename;
       appender = new FileAppender(layout,path);
       appender.setName("Analysis Appender");
       org.apache.log4j.Logger.getLogger("my.package.hierarchy").addAppender(appender);
     } catch (IOException e) {
       org.apache.log4j.Logger.getLogger(Config.class).warn(
                                                      "Failed to create a dedicated log "
                                                      + filename, 
                                                      e);
     }
   }        
}

Config.LOGFILE_PATH不是null (来自命令行参数)时,一切都正常。日志文件在指定的路径中创建。

但是,当LOGFILE_PATH is null没有创建日志文件时,更确切地说,没有任何日志文件被写入日志文件。

使用-Dlog4j.debug运行程序提供:

代码语言:javascript
复制
log4j: setFile called: /home/tbender/.something/bytecode/OMFG_3527961e3fb1134e1d3221c000879a90ff1022b6/bytecode/OMFG-1340994475441.log, true
log4j: setFile ended

当我逐步浏览代码并关注打开的文件句柄列表时,我可以看到文件句柄是在创建appender期间创建的。应用程序完成后,不存在日志文件。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-13 12:39:18

好的,最终导致问题的不是FileAppend,而是一段完全无关的代码,它删除并重新创建了我的日志文件所在的文件夹。哦哦!

麻烦的好提示是:当您在linux中时,请使用strace:

代码语言:javascript
复制
strace -tt -f -e trace=create,open,close,unlink -o strace.out java -jar yourjar.jar

这将向您显示创建、删除、关闭或删除哪些文件。你也可以包括一些其他的东西。更多的调用可以找到这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11300554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档