【问题标题】:Log4j file isn't created: logging from the application running on WAS6.1未创建 Log4j 文件:从在 WAS6.1 上运行的应用程序进行日志记录
【发布时间】:2012-08-14 17:46:18
【问题描述】:

我有一个在 WAS 6.1 上运行的 Java 应用程序,Log4j 用于日志记录。 不创建日志文件。使用了一些其他的日志配置,但不是与应用程序一起打包的配置。

我应该在哪里检查 WAS6.1 全局 log4j 配置?如何为特定应用程序覆盖它?

应用程序是从战争档案中部署的。
log4j-1.2.14.jar 与应用程序一起打包在 WEB-INF/lib 目录下。我放了一个 WEB-INF 目录下的 commons-logging.properties 文件。

这是我的 web.xml:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    id="WebApp_ID" version="2.4">
    <display-name>LineCheckOptimizerWeb</display-name>
    <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.xml</param-value>
</context-param>

<listener>
    <description>Initializes a Guice Injector and installs it into the ServletContext</description>
    <display-name>GuiceInitializer</display-name>
    <listener-class>com.aa.otrs.lco.guice.GuiceInitializer</listener-class>
</listener>

    <servlet>
            <servlet-name>MessageBrokerServlet</servlet-name>
            <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
            <init-param>
                    <param-name>services.configuration.file</param-name>
                    <param-value>/WEB-INF/flex/services-config.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
            <servlet-name>MessageBrokerServlet</servlet-name>
            <url-pattern>/messagebroker/*</url-pattern>
    </servlet-mapping>

    <resource-ref>
            <description>LCO JDBC Datasource</description>
            <res-ref-name>jdbc/lco</res-ref-name>
            <res-type>javax.sql.DataSource</res-type>
            <res-auth>Container</res-auth>
    </resource-ref>

【问题讨论】:

  • 这听起来像stackoverflow.com/questions/8131529/… 中的同一个问题,看看那里的答案是否对你有帮助。
  • 感谢您的指点,但没有 - 似乎没有任何区别。
  • WAS 不使用 log4j,但确实使用了 JCL。因此它不会获取您的 commons-logging.properties。您尝试了哪些没有影响的事情?
  • 我添加了 org.apache.commons.logging.LogFactory 到 META-INF/services 目录,正如stackoverflow.com/questions/8131529/…中所建议的那样
  • 我知道我不认识&lt;hidden-classes&gt;。我不知道这是否与您的问题有关,但我很确定只有基于 Geronimo 的 WebSphere 版本(WebSphere Community Edition)才能理解这一点。不是 WebSphere 6.1。

标签: java logging log4j websphere web.xml


【解决方案1】:

检查您的应用程序中是否存在其他包含 log4j.xml 的 jar 文件。冲突将不允许启用正确的日志记录。还使用跟踪字符串 com.ibm.ws.classloader.*=all 启用跟踪并重新启动服务器。检查trace.log

我最近遇到了类似的问题,团队添加了外部 jars

【讨论】:

    【解决方案2】:

    原来它在其中一个项目 *.jar-s 中缺少一个 log4j jar,其中包含日志记录。修复了它,并且 viola - 它起作用了,日志文件神奇地按预期出现。

    【讨论】:

      【解决方案3】:

      我会打开 log4j 的调试器(通过 System D 属性)并查看选择的 log4j 属性是什么,以及它是否选择了您期望的属性。这是遇到 log4j 配置问题时要做的第一件事。

      如果您使用的是 JCL ,WAS 6.1 已从 JCL 移出并使用 JUL(从记忆中说)看看这个 -> http://www.ibm.com/developerworks/websphere/techjournal/0901_supauth/0901_supauth.html 看看是否有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-17
        • 1970-01-01
        • 2014-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多