我想读取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

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

1回复

类名称在log4j控制台输出中显示问号(?)

我的应用程序登录到log4j ... 我的应用程序日志显示在Eclipse控制台中: 2012/03/15 11:51:06,002 Log4jTest.java-您好,世界! 但是当我将应用程序构建为app.jar后运行app.jar时 2012/03/15 11:51
2回复

Manifest.mf:在jar文件中参考Main-class

我正在制作一个可运行的jar,我的主要类是eclipse的JarRsrcLoader。 这是我的包裹结构 : 而我的清单 : 还有我的jar中的目录结构: 当我尝试使用以下命令从命令行运行jar时: 我得到: 谁能看到我要去哪里错了? 当我将org
2回复

在可执行JAR中引用log4j配置文件

我正在创建一个可执行的JAR,它使用一些XML配置文件,一个用于应用程序,另一个用于log4j。 要引用我的应用配置文件,我这样做: 这适用于我的应用程序配置,但问题是我无法像这样配置log4j。 这是配置log4j的代码: 这不起作用,因为XML文件将存储在打包的JAR中。
2回复

为什么“dist /”目录中没有manifest.mf,为什么jar文件不起作用?

我是NetBeans的新手,我找不到MANIFEST.MF 这个链接告诉我应该在IDE中点击“清理和构建”时。 但是,我只看到.jar文件和README.TXT。 有人对此有任何想法吗? 我是NetBeans的新手,所以非常感谢简单的术语! 此外,当我在IDE中运行我的项目时
1回复

log4j喜欢它在jar文件中的属性吗?

我有一个Java应用程序,可以直接从可执行jar文件在Linux上执行 该程序使用许多其他的jar文件,它们全部位于一个目录中,并包含4个属性文件,所有这些文件均位于另一目录(当前目录)中。 这两个目录都包含在CLASSPATH 。 很简单吧。 只是Log4j无法找到log
1回复

我的MANIFEST.MF应该如何显示?

我具有以下直接结构: 我对mainfest文件是完全陌生的,只是想让.jar在远程机器上运行。 我的清单现在看起来像这样: 清单版本:1.0 主要类别:cs425.mp1.main.UX 但是我一直都在 有什么帮助吗? 我不确定要为我的外部库添加哪些
1回复

如何停止在控制台上打印log4j FileNotFound错误?

我创建了一个实用程序,用于将一些文本数据移动到SQL数据库中,并已实现了用于调试目的的logging(log4j)。 一旦创建了一个我的实用程序的jar并调用它来执行,该实用程序就可以正常工作,但是每次输出之前都会出现以下错误消息: 请注意,我的实用程序有效,并且文本已插入数据库中。
1回复

尽管在MANIFEST.MF中正确指定了“找不到主类:bla.bla.yada”

我正在尝试使用命令“ java -jar Filename.jar”运行一个.jar文件,但是我总是收到一条错误消息:“找不到主类:bla.bla.yada”。 我使用Maven构建整个应用程序,并在MANIFEST.MF中指定了Main-Class。 文件中的路径正确,并且该类也位于jar
1回复

即使将Additivity设置为false,log4j ConsoleAppender也要打印两次到控制台

我有log4j附加程序,当在intellIj中运行程序时,会将输出打印到控制台一次 但是通过可执行文件.jar运行该程序两次。 写入日志文件的实际日志仅显示一次,这是正确的。 我在此代码块中以编程方式定义了我的记录器/附加器 一切完成后,我打电话给 但是由于某种原因,当以.jar运
1回复

log4j:使用jar写入日志文件

我正在尝试使用log4j将日志打印到日志文件。 它运作完美。 但是当我将项目导出为jar文件并运行它时,出现错误 项目结构如下https://www.mkyong.com/logging/log4j-hello-world-example/ 有人可以帮忙吗?