我想阅读log4j.xml文件,该文件位于jar文件夹内的文件夹之外。所以我创建了清单文件如下
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
它显示通常的例外情况是没有appender可以找到记录器并且没有生成日志文件。
当我将log4.xml文件放在jar文件中时,它会提供所需的输出。
请帮助我无法弄清楚为什么配置文件没有被选中,即使它是在使用manifest.mf文件配置的类路径中。 提前谢谢。
答案 0 :(得分:1)
您需要指定目录,而不是文件;像普通的类路径一样。
但是,我不确定我是否喜欢这个想法;我认为在命令行上提供配置文件路径会更方便。答案 1 :(得分:0)
Log4J正在将log4j.xml文件查找到类路径的根目录中。这意味着您应该将它从现在的etc
文件夹向上移动一级,并修复您的清单文件。我相信你实际上根本不必提及清单中的log4j.xml。把它装进你的罐子里吧。