有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java“log4j:WARN请正确初始化log4j系统”错误

我有一个web应用程序,其中一个JSP包含:

PropertyConfigurator.configure(System.getenv("MY_HOME") + "/cfg/log4j.properties");

我仔细检查了MY_HOME是否已设置

Tomcat web服务器说:

log4j:WARN No appenders could be found for logger (com.mycompany.data.JobData).
log4j:WARN Please initialize the log4j system properly.

同样的设置在另一台服务器上也可以正常工作

有什么提示吗

问题是没有创建日志


共 (4) 个答案

  1. # 1 楼答案

    与你的答案无关,但这也有帮助

    如果是web应用程序,最简单的方法是确保log4j.properties位于WAR文件的WEB-INF/classes文件夹中。部署应用程序时,将配置log4J

  2. # 2 楼答案

    必须在系统中的任何内容尝试登录之前调用PropertyConfiguration以避免此警告。您可能会发现在命令行上设置log4j配置更可靠

    或者你可以忽略警告

    顺便说一句:你不想太频繁地调用这个方法,最好只调用一次

  3. # 3 楼答案

    我能够在ApacheTomcat6中运行Eclipse动态Web项目来找到这个问题的解决方案。基本上,您需要从上下文中加载log4j属性文件

    两个基本步骤

    (1)获取log4j。属性文件放入war文件的“类目录”

    (2)从当前上下文中读取log4j属性文件。我发现最好的方法是访问当前线程的上下文并从那里开始工作

    对于上面的第一步,修改Eclipse构建过程以添加一个附加目录,该目录最终将加载到war文件中的WEB-INF/classes目录中。具体地说

    (1)在Eclipse中,右键单击项目浏览器中的项目,选择“新建”->;'文件夹'。您可以为文件夹命名任何名称,但本例中的标准名称是“资源”。新文件夹应显示在项目的根级别

    (2)移动log4j。属性文件保存到此新文件夹中

    (3)再次右键单击项目,然后选择“构建路径”->;'配置“生成路径”。选择“源”选项卡。单击“添加文件夹”按钮。浏览以查找在上述步骤(1)中创建的新文件夹。选择“确定”

    (4)回到EclipseProjectExplorer视图后,请注意该文件夹现在已移动到“Java资源”区域(即,由于eclipse表示抽象,它不再位于根目录下)

    (5)清洁构建您的项目

    (6)验证。属性文件现在存在于war文件的WEB-INF/classes中,请将war文件导出到一个方便的位置(右键单击Project->;导出->;war文件),然后签出内容。注意log4j。属性文件现在显示在WEB-INF/classes中

    现在进入上面的第二步,访问上下文以读取文件。在尝试读取文件的位置添加以下代码。请注意,这将从war文件上下文中读取该文件,因此当war文件从一个服务器移动到另一个服务器时,该文件“应该”起作用

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    PropertyConfigurator.configure(classLoader.getResourceAsStream("log4j.properties") );