【问题标题】:Commons logging only going to system logs in WAS 6.1在 WAS 6.1 中,Commons 日志只进入系统日志
【发布时间】:2010-10-08 16:02:24
【问题描述】:

我正在尝试使用带有 log4j 的 commons-logging 将我的应用程序日志写入文件,但我的日志一直转到 SystemOut.log。确实创建了日志文件,但它是空的。

这是我的 log4j.properties 和 commons-logging.properties(两者都应该在类路径中 - 它们在 WEB-INF/classes 下)

WEB-INF/classes/log4j.properties:

log4j.rootLogger=INFO, AppLogAppender
log4j.logger.org.apache.struts2.util.TextProviderHelper=ERROR, AppLogAppender
log4j.logger.com.wawanesa=DEBUG, AppLogAppender

# AppLogAppender
log4j.appender.AppLogAppender=org.apache.log4j.FileAppender
log4j.appender.AppLogAppender.File=/waslogs/applogs/us.log

log4j.appender.AppLogAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.AppLogAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

WEB-INF/classes/commons-logging.properties:

priority=1
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl

我的应用程序类路径上有 log4j.jar 和 commons-logging.jar。我在 was6.0 中看到了类加载器问题,您必须将其设置为“应用优先”,但我没有看到任何 commons-logging 类类加载器视图中的基本 Websphere 类路径。

【问题讨论】:

    标签: java websphere


    【解决方案1】:

    问题在于 WebSphere 本身使用公共日志记录,所以发生的情况是您正在获取应用程序服务器的公共日志记录属性文件。尝试将模块的类加载器顺序更改为“首先加载应用程序类”,这应该意味着当您的应用程序启动时,它会获取自己的日志配置而不是服务器。

    【讨论】:

      【解决方案2】:

      文件为空的事实告诉我们确实正在调用您自己的log4j.properties,而不是类路径中的其他log4j.properties / log4j.xml。请记住,log4j 中的 File Appender 被设计为在 log4j 初始化后立即创建输出文件——而不是等待第一个日志行到达那里。

      现在,我认为您在 commons-logging.properties 中缺少此内容:

      org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

      如果这没有帮助,请将必要的系统属性添加到您的 WAS 实例以在“调试模式”下激活 log4j - 属性名称 log4j.debug,值 true

      【讨论】:

        【解决方案3】:

        更好的解决方案是使用 JCL over SLF4J 和 Log4j 桥接器。这将消除可部署工件中对 commons-logging.jar 的需求,并且不需要最后将类加载器更改为父级。

        JCL over SLF4J 的详细信息在这里http://www.slf4j.org/legacy.html

        使用以下 maven 依赖项将 log4j 日志记录到 WebSphere Application Server v8.5 中的文件附加程序

        <dependencies>
          <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-context</artifactId>
           <version>4.3.1.RELEASE</version>
           <scope>runtime</scope>
           <exclusions>
             <exclusion>
               <groupId>commons-logging</groupId>
               <artifactId>commons-logging</artifactId>
             </exclusion>
           </exclusions>
         </dependency>
         <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>jcl-over-slf4j</artifactId>
          <version>1.7.21</version>
          <scope>runtime</scope>
         </dependency>
         <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.7.21</version>
          <scope>runtime</scope>
         </dependency>
         <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.7.21</version>
          <scope>runtime</scope>
         </dependency>
         <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
          <scope>runtime</scope>
         </dependency>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-30
          • 2013-01-03
          • 2011-06-27
          • 2011-07-25
          • 2011-06-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多