log4j在weblogic服务器上不起作用?

时间:2011-09-12 10:08:16

标签: java log4j weblogic-10.x

我正在使用weblogic 10.3.4,我正在尝试使用log4j编写日志。但在运行时,我的应用程序没有获得任何log4j.properties。即使这没有产生任何警告,因为“log4j的初始化有错误”。

我已尝试将我的属性文件放入src文件夹,classes文件夹,然后创建了一个jar并将其放在域lib中。仍然没有采摘。即使我在独立应用程序中使用相同的jar编写日志,它的工作正常。

请帮助我提出宝贵的建议。

4 个答案:

答案 0 :(得分:3)

我尝试在Oracle论坛上提出the solution

摘自Oracle论坛的链接:

我只修改了scritp startWebLogic.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)。

我在不同的属性文件上尝试了这种方法,并且效果很好!

答案 1 :(得分:2)

您需要指定应用程序应找到其log4j.properties的位置,或将其放在应用程序的类路径中。类路径有所不同,但一般来说WEB-INF / classes应该有效。其他选项取决于您部署应用程序的方式。

更好的长期策略是配置系统,以便根据环境更改log4j.properties。当您正在制作时,您不希望出现所有调试信息。查看this questionthis question的答案以获取更多想法。一种策略是在命令行上定义一个变量,然后定义一个包含配置文件的目录。这适用于Tomcat,但Weblogic可能还有其他更好的策略。

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

答案 2 :(得分:1)

我使用过这段代码:

    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中,我们能够在WebLogic的域路径(特定于我们部署的域)上放置相当于您的log4j.properties文件的文件(mylog4j.xml)。这意味着域文件夹属于您的应用程序的路径。我刚用Web应用程序测试它,我不确定SOA或EJB项目是否以相同的方式工作。

答案 3 :(得分:-1)

在任何服务器上部署任何应用程序时,应该使用服务器log4j jar。

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