Java log4j在weblogic服务器中不工作?

Java log4j在weblogic服务器中不工作?,java,log4j,weblogic-10.x,Java,Log4j,Weblogic 10.x,我正在使用WebLogic10.3.4,我正在尝试使用log4j编写日志。但是在运行时,我的应用程序没有得到任何log4j.properties。即使这样,也不会生成任何警告,因为“log4j的初始化有错误” 我试着把我的属性文件放在src文件夹、classes文件夹中,然后我创建了一个jar并将它放在域库中。但它仍然没有选择。即使我在独立应用程序中使用相同的jar编写日志,它也可以正常工作 请帮我提一些有价值的建议。当您在任何服务器上部署任何应用程序时,该应用程序都应该使用servers lo

我正在使用WebLogic10.3.4,我正在尝试使用log4j编写日志。但是在运行时,我的应用程序没有得到任何log4j.properties。即使这样,也不会生成任何警告,因为“log4j的初始化有错误”

我试着把我的属性文件放在src文件夹、classes文件夹中,然后我创建了一个jar并将它放在域库中。但它仍然没有选择。即使我在独立应用程序中使用相同的jar编写日志,它也可以正常工作


请帮我提一些有价值的建议。

当您在任何服务器上部署任何应用程序时,该应用程序都应该使用servers log4j jar


因此,如果您在应用程序jar/tar/ear中添加了任何log4j jar,请将其删除,并将log4j.properties文件复制到服务器的conf文件夹中,服务器将从中拾取其配置文件。或者只需在servers log4j属性文件中复制log4j属性内容。

您需要指定应用程序应在何处找到其log4j.properties,或者将其放在应用程序的类路径上。类路径不同,但通常WEB-INF/classes应该可以工作。其他选项取决于您部署应用程序的方式

更好的长期策略是配置系统,以便根据环境更改log4j.properties。在生产环境中,您不希望显示所有调试信息。请查看或的答案以了解更多想法。一种策略是在命令行上定义一个变量,该变量将被提取并定义一个包含配置文件的目录。这对Tomcat有效,但Weblogic可能还有其他更好的策略

更改服务器的配置不是一个好主意,尤其是不要替换服务器目录中的log4j.jar或log4j.properties。服务器将取决于其设计使用的版本,该版本可能与您的版本相同,也可能与您的版本不同。您可以通过更改正在部署的战争来完成所有需要完成的任务。

我曾在Oracle论坛上尝试过

摘自Oracle论坛上的链接:

我只修改了scritpstartweblog.cmd

 set LOG4J_CONFIG_FILE=log4j.xml 
 set SAVE_JAVA_OPTIONS=%JAVA_OPTIONS% -Dlog4j.configuration=%LOG4J_CONFIG_FILE%

 @REM set SAVE_CLASSPATH=%CLASSPATH% 
 set SAVE_CLASSPATH=%CLASSPATH%;C:\Oracle\Middleware\user_projects\domains\domain\config

通过这种方式,我将所有配置文件夹都放在类路径中,将来我可以使用它来保存其他库配置文件(例如oracle coherence config)

我在另一个属性文件上也尝试了这种方法,效果很好

我使用了以下代码:

    ClassLoader cl = this.getClass().getClassLoader();
    URL log4jCfg = cl.getResource(configFile);
    if (log4jCfg != null) {
        DOMConfigurator.configure(log4jCfg);
    }
log.info("log4j is now working on Web App.");
在我的例子中,我们使用了XML配置:

log4jCfg = "mylog4j.xml";

在WebLogic中,我们能够将类似于log4j.properties文件的文件(mylog4j.xml)放置在WebLogic的域路径(特定于我们部署的域)。这意味着域文件夹属于应用程序的路径。我只是用Web应用程序测试了它,我不确定它在SOA或EJB项目中的工作方式是否相同。

您好,我按照您的要求做了同样的工作。并将我的log4j.properties保存在域的jar文件和config文件夹中。然后我重新启动服务器。我仍然面临同样的问题。。谢谢-1您不应该将log4j复制到您的服务器配置中。它作为战争的一部分运作得非常好。如果您将其复制到服务器配置中,那么它将位于服务器类路径上,这对于服务器上的任何其他应用程序都不一定是好的。这就像破坏了您的环境一样。嗨,我尝试了所有组合。还是没上来。请建议weblogic服务器从何处读取log4j.properties文件。。。。感谢您告诉use您将log4j.properties放在哪里,您是如何部署应用程序的(通过一场战争?),以及您遇到的错误。谢谢。实际上这是SOA应用程序。所以我们需要部署sar(jar文件)。上次我添加了一个包含log4j.properties的jar文件,它正常工作了。然后我改变了我的环境,它停止了,我创建了一个只有log4j.properties的jar文件,它不工作了。现在我已经试着把类,src文件夹也放进去了,它在服务器声明时给了我警告,对于一些appender“wsif”,即使我们也不使用这个appender。太混乱了。您是否尝试过使用-Dlog4j.debug运行weblogic。这将告诉你它在哪里寻找它的配置。非常感谢,我设法调试。现在我发现还有另一个log4j.properties文件是由enterprise manager(em)应用程序放置的。正在覆盖我们的log4j.properties。现在,请您帮助我如何在调用服务器时设置log4j.properties,以便这两个文件都能正常工作。您已经发布了230个答案,所有这些答案都包含可怕的格式和误用的内联HTML元素。请,请花一分钟,学习如何使用。如果你正确使用编辑器,你就不应该在帖子中使用

标记。meagar——这很苛刻,但我会从中吸取教训!我将学习降价编辑器。谢谢。注意:对于部署在WLS上的每个应用程序,甚至是weblogic本身(如果weblogic配置为使用log4j),此方法将全球化这个特定的log4j属性文件。在多应用程序环境中,根本不建议使用此方法。相反,将log4j.properties文件打包到它们自己的jar/war/ear中