我想读取etc4文件夹内jar之外的log4j.xml文件。 所以我创建清单文件如下

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_24-b07 (Sun Microsystems Inc.)
Built-By: Administrator
Main-Class: com.him.LogPrinter
Class-Path: ./lib/log4j.jar ./etc/log4j.xml

我的班级档案如下

package com.him;
import org.apache.log4j.Logger;
public class LogPrinter {

/**
 * @param args
 */
public static Logger logger = Logger.getLogger(LogPrinter.class);
public static void main(String[] args) {
    logger.debug("I am a debug message");
    logger.info("i am a info message");
    logger.error("i am a error message");
    logger.warn("i am a warn message");
    System.out.println("hello");
}

}

当我使用运行我的jar文件时

java -jar myapp.jar

它显示通常的例外情况,即找不到记录器的附加程序,也没有生成日志文件。

当我将log4.xml文件放在jar文件中时,它会提供所需的输出。

请帮助我,即使在使用manifest.mf文件配置的类路径中,也无法弄清为什么未选择配置文件。 提前致谢。

===============>>#1 票数:1 已采纳

您需要指定目录,而不是文件。 像普通的classpath

不过,我不确定我是否喜欢这个主意。 我认为在命令行上提供配置文件路径会更方便。

===============>>#2 票数:0

Log4J正在将log4j.xml文件查找到类路径的根目录中。 这意味着您应该将其从现在所在的etc文件夹上移一级,并修复清单文件。 我相信您实际上根本不必在清单中提及log4j.xml。 只需将其包装到您的罐子中即可。

  ask by HKumar translate from so

未解决问题?本站智能推荐: