java - 运行 jar 文件时不创建 Log4j 日志

标签 java log4j

这是我用来测试 log4j 的 Student 类。

public class Student{    
    private static final Logger logger = Logger.getLogger(Student.class.getName());   

    public Student() {  
         PropertyConfigurator.configure("log4j.properties");  
    }

    public static void main(String args[]){  
        logger.log(Level.INFO, "My log4j Test");    
    } 
}

这是我的log4j.properties 文件

log4j.rootLogger=INFO,Appender1,Appender2
log4j.appender.Appender1=org.apache.log4j.ConsoleAppender
log4j.appender.Appender2=org.apache.log4j.RollingFileAppender
log4j.appender.Appender2.File=C:/Log4j/MyLogExample.log

log4j.appender.Appender1.layout=org.apache.log4j.PatternLayout`  
log4j.appender.Appender1.Target=System.out`   
log4j.appender.Appender1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n`  

log4j.appender.Appender2.layout=org.apache.log4j.PatternLayout`  
log4j.appender.Appender2.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n`  

log4j.appender.Appender2.MaxFileSize=50KB`  
log4j.appender.Appender2.MaxBackupIndex=10` 

当我使用 Eclipse 运行此程序时,MyLogExample.log 文件被创建。但是在我创建了一个 jar 文件并使用命令提示符运行它之后,没有创建日志文件。

在控制台中我可以看到这个错误。

log4j:ERROR Could not read configuration file [log4j.properties]. 
java.io.FileNotFoundException: log4j.properties (The system cannot find the file specified) 

添加以下代码示例后,即使在命令提示符下运行 jar 文件,也会创建日志文件。

PropertyConfigurator.configure("C:\\eclipeworkspace\\Log4jTest\\log4j.properties");

我如何给出相对路径而不是确切路径?

最佳答案

使用这个:

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = classLoader.getResource("log4j.properties");
File file = new File(url.toURI());

关于java - 运行 jar 文件时不创建 Log4j 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11573510/

相关文章:

java - 带有 NullPointerException 的简单 Java 音乐数据库

java - 处理来自数据库的响应并将其传递给新 Activity

java - log4j:防止重复日志消息的标准方法?

logging - Liferay 日志级别

java - 使用 HTML 自定义格式的 Log4j.properties 进行日志记录

java - 如何让 SLF4J 在应用程序中自动注入(inject)我的 Logger 实现?

java - 如何在springframework中查找注解的文档

java - 如何将父类(super class)对象与基类对象分开?

java - 在同一个 Spring 应用程序中使用两个日志记录框架

Java反向传播算法非常慢