2016-02-15 40 views
2

当我使用JUnit测试我的应用程序时,它正在按照log4j2.xml中的布局模式指定的日志打印日志,但是当我在WildFly 9中部署我的应用程序 时,我不再获得相同的格式。即使Log4j2中的日志级别也未在服务器中部署。如何为在WildFly 9中部署的应用程序设置Log4j2?

JUnit的日志示例:

2016年2月15日11:14:16314 DEBUG [主要]btrcXAPool - 连接的 状态变为IN_POOL,通知线程最终等待 连接

服务器日志例如:

11:11:33796 INFO [org.quartz.core.QuartzScheduler](Server服务 线程池 - 89)调度 quartzScheduler _ $ _ anindya-ubuntu1455514892022开始。

Log4j2.xml:

<Configuration status="WARN" name="myapp" monitorInterval="5"> 
    <Appenders> 
     <RollingFile name="RollingFile" fileName="${myapp.log-dir}/myapp.log" 
        filePattern="${myapp.log-dir}/$${date:yyyy-MM}/myapp-%d{MM-dd-yyyy}-%i.log"> 
      <PatternLayout> 
       <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> 
      </PatternLayout> 
      <Policies> 
       <OnStartupTriggeringPolicy /> 
       <SizeBasedTriggeringPolicy size="25 MB"/> 
      </Policies> 
      <DefaultRolloverStrategy max="100"> 
       <Delete basePath="${myapp.log-dir}" maxDepth="2"> 
        <IfFileName glob="*/myapp-*.log"> 
         <IfLastModified age="7d"> 
          <IfAny> 
           <IfAccumulatedFileSize exceeds="1 GB" /> 
           <IfAccumulatedFileCount exceeds="1" /> 
          </IfAny> 
         </IfLastModified> 
        </IfFileName> 
       </Delete> 
      </DefaultRolloverStrategy> 
     </RollingFile> 
    </Appenders> 
    <Loggers> 
     <Logger name="com.company.myapp" level="trace" additivity="false"> 
      <AppenderRef ref="RollingFile"/> 
     </Logger> 
     <Root level="info"> 
      <AppenderRef ref="RollingFile"/> 
     </Root> 
    </Loggers> 
</Configuration> 

启动服务器时,我提供以下的Starup属性JAVA_OPTS:

出口JAVA_OPTS =“$ JAVA_OPTS -Dspring.profiles.active = 'qa' -Dlog4j.configurationFile =/home/anindya/1.0/log4j2.xml -myapp.log-dir =/home/anindya/log -Dorg.jboss.logging.provider = log4j“

我没有具体的设置web.xml,因为它是Servlet 3.1容器。但是,我有我的WEB-INF如下一个jboss-deployment-structure.xml

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> 
    <deployment> 
     <!-- Exclusions allow you to prevent the server from automatically adding some dependencies --> 
     <exclusions> 
      <module name="org.apache.logging.log4j" /> 
     </exclusions> 
    </deployment> 
</jboss-deployment-structure> 

最后,这里是我的类路径依赖关系(只有相关部分在此提及):

  • hibernate-5.0.7.Final依赖
  • jbpm-6.3.0.Final依赖性
  • 弹簧4.2.4.RELEASE依赖性
  • 共享记录-1.2.jar
  • 的log4j-1.2-API-2.5.jar
  • 的log4j-API-2.5.jar
  • log4j的核-2.5.jar
  • 的log4j-JCL-2.5.jar
  • 的log4j-SLF4J-impl- 2.5.jar
  • log4j-web-2.5.jar
  • jboss-logging-3.3.0.Final。jar

通过以上所有设置,我仍然无法在WildFly环境中根据我的log4j2.xml配置Log4j2。有人可以帮忙吗?

注意:我在独立模式下运行WildFly,我想避免使用jboss-cli

+0

wildfly能否正常地使用log4j2?我有一些困难:它创建日志文件,但它是空的 – Alex

回答

1

我设法使用下面的jboss-deployment-structure.xml来使它工作。

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> 
    <deployment> 
     <exclusions> 
      <module name="org.apache.logging.log4j" /> 
     </exclusions> 
     <exclude-subsystems> 
      <subsystem name="logging"/> 
     </exclude-subsystems> 
    </deployment> 
</jboss-deployment-structure> 

我只需要排除日志子系统。

0

没有模块org.apache.logging.log4j。您应该使用的模块名称是org.apache.log4j

我不确定你为什么不想使用CLI,但是你也可以将add-logging-api-dependencies设置为false。

/subsystem=logging:write-attribute(name=add-logging-api-dependencies, value=false) 
+3

org.apache.logging.log4j是log4j-2.x。 org.apache.log4j是log4j-1.x –

+0

如果是这种情况,那么该模块将被手动添加。 WildFly目前不附带log4j2。 –

相关问题