`
侯上校
  • 浏览: 225742 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

log4j加载配置bug

 
阅读更多
异常信息:
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: 
	at java.io.FileOutputStream.open(Native Method)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:142)
	at org.apache.log4j.FileAppender.setFile(FileAppender.java:311)
	at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:207)
	at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:182)
	at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
	at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
	at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
	at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)
	at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
	at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
	at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
	at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
	at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
	at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
	at org.apache.log4j.Logger.getLogger(Logger.java:117)
	at log4j.LogMoreFile.<clinit>(LogMoreFile.java:11)
经过查看源码,异常产生于:
  void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize)
                                                            throws IOException {
    LogLog.debug("setFile called: "+fileName+", "+append);

    // It does not make sense to have immediate flush and bufferedIO.
    if(bufferedIO) {
      setImmediateFlush(false);
    }

    reset();
    FileOutputStream ostream = null;
    try {
          //
          //   attempt to create file
          //
          ostream = new FileOutputStream(fileName, append);
    } catch(FileNotFoundException ex) {
          //
          //   if parent directory does not exist then
          //      attempt to create it and try to create file
          //      see bug 9150
          //
          String parentName = new File(fileName).getParent();
          if (parentName != null) {
             File parentDir = new File(parentName);
             if(!parentDir.exists() && parentDir.mkdirs()) {
                ostream = new FileOutputStream(fileName, append);
             } else {
                throw ex;
             }
          } else {
             throw ex;
          }
发现此处有个bug
经过查看官方:

 

  • 大小: 23 KB
分享到:
评论

相关推荐

    如何在Java工程中使用Log4j

    要在Java工程中使用Log4j,首先需要下载Log4j的jar包,例如log4j-1.2.16.jar,然后将其加载到工程中去。在src源程序包中添加一个log4j.properties文件,用于配置Log4j的日志记录规则。以下是一个简单的log4j....

    log4j支持jar包

    通过调用`PropertyConfigurator.configure("path/to/log4j.properties")`,Log4j会加载上述配置,并根据设定来处理日志输出。 在实际开发中,选择同时引用1.2.8和1.2.16的场景可能是因为某些库或组件依赖于特定版本...

    log4j-2.6.2完整jar

    3. **初始化Log4j**:在应用程序启动时加载配置文件,初始化Log4j。 4. **编写日志代码**:使用Logger类的debug、info、warn、error等方法记录日志。 **三、示例配置** ```xml [%t] %-5level %logger{36} - %...

    Hibernate Synchronizer 插件重大缺陷改正

    对于log4j,应在项目启动时通过加载配置文件来设置日志级别和输出目标;对于Hibernate,应确保XML配置文件格式正确且包含所有必要的数据库连接信息、映射信息等。 ### 解决方案 针对上述问题,解决方案包括: - **...

    slf4j-1.6.1

    对于Log4j,配置文件通常为`log4j.properties`或`log4j.xml`,其中定义了日志级别、输出目的地、格式等信息。 - 例如,可以设置全局日志级别为INFO,将错误日志输出到控制台,其他日志写入文件。 6. 绑定冲突解决...

    slf4j.jar 相关18个包

    6. 日志配置:每个具体的日志框架都有自己的配置文件,如Log4j的`log4j.properties`或`log4j.xml`。这些配置文件定义了日志级别、输出目的地(控制台、文件、网络等)以及格式化方式。 7. 多版本冲突:在同一个项目...

    log4javascript

    这个库深受Java日志框架log4j的启发,提供了类似的功能,使得JavaScript开发者能够方便地追踪代码执行过程中的各种事件和错误,从而提升调试效率。 **核心功能** 1. **多级别的日志记录**:log4javascript支持多种...

    java slf4j 相关包

    SLF4J的工作原理是,当你运行包含SLF4J API的程序时,如果没有找到绑定的日志实现,SLF4J会自动检测环境中的jar包,并尝试加载第一个找到的日志实现。如果找到了`slf4j-simple-1.7.7.jar`,那么就会使用SLF4J-Simple...

    slf4j-1.7.5

    2. **绑定机制**:SLF4J允许在运行时选择具体的日志实现,通过加载特定的“绑定”实现,如`log4j-over-slf4j.jar`(用于桥接Log4j)或`slf4j-simple.jar`(用于简单打印日志)。在SLF4J 1.7.5版本中,这个机制得到了...

    Visual Studio 未能加载文件或程序集解决方案

    9. **使用 Fuslogvw 工具**:Microsoft 的 Fusion Log Viewer(fuslogvw.exe)可以帮助诊断程序集加载失败的原因。通过该工具,你可以查看详细的加载日志,找出哪个程序集加载失败以及具体原因。 10. **代码问题**...

    dom4j-1.6.1.jar

    在日志系统中,如Log4j,DOM4J用于读写配置文件。 五、性能优化 虽然DOM4J提供了便利的XML操作,但处理大型XML时应注意内存效率。使用SAX解析器可降低内存占用,或者分块处理XML以减小一次性加载的数据量。 六、...

    commons-logging-1.1.1.jar.zip

    如果配置文件中指定了Log4j,则会使用Log4j;如果没有配置,那么默认会使用Java内置的日志系统。 在实际应用中,`commons-logging-1.1.1.jar`的使用通常需要配合具体的日志实现库一起,比如Log4j或SLF4J。这可以...

    commons-logging

    例如,如果使用Log4j,可以通过log4j.properties或log4j.xml文件进行配置。 4. **轻量级**:由于它的接口设计,Commons Logging本身并不包含任何日志实现,只在运行时查找可用的日志实现,因此它的大小很小,对应用...

    JBoss Development Process Guide

    - 解释了如何在不同类加载器的作用域下使用自定义的 log4j.xml 文件。 - **8.3.7 使用自己的 log4j.properties 文件——类加载器作用域** - 介绍了类似的概念,但针对的是 log4j.properties 文件。 - **8.3.8 使用...

    commons-logging-1.1.1.zip

    这个项目的主要目标是为 Java 开发者提供一个简单的、统一的日志接口,允许他们选择任意的日志实现(如 Log4j, JDK内置的日志系统等)作为底层日志框架,而无需更改代码。在本案例中,我们关注的是 "commons-logging...

    Hibernate3.1 3.2jar包

    6. **slf4j-api.jar** 和 **slf4j-log4j12.jar**: 日志框架,用于记录Hibernate的运行日志。 7. **log4j.jar**: 另一个日志库,与SLF4J配合使用。 8. **jta.jar** 或 **javax.transaction-api.jar**: 支持分布式...

    ant-commons-logging-1.6.2.jar.zip

    而`ant-commons-logging-1.6.2.jar`则是Ant项目的一个关键组件,它是一个专门用于日志记录的库,提供了与各种流行日志框架的集成,如Log4j、Jakarta Commons Logging(JCL)和Java内置的日志API。 1. **Apache Ant*...

    apache-tapestry-5.3.7-bin.zip

    `log4j-1.2.16.jar`是日志记录库,用于收集和记录应用程序运行过程中的各种信息,这对于调试和性能监控至关重要。Tapestry与Log4j的集成使得开发者可以方便地控制和调整日志级别,以满足不同阶段的需求。 `tapestry...

    tomcat-9.0.87

    4. **日志管理**:调整logging.properties或使用其他日志框架(如Log4j)来定制日志输出。 5. **内存调优**:根据应用的需求和服务器的硬件配置,适当调整JVM的内存参数(如-Xms和-Xmx)。 6. **安全性**:配置...

Global site tag (gtag.js) - Google Analytics