Spring启动和JBoss 8 Wildfly日志配置应用程序

时间:2014-11-26 15:43:15

标签: jboss spring-boot logback wildfly

我有一个Spring启动应用程序准备成为WAR。它在Tomcat 8(嵌入式或独立式)以及JBoss 8 Wildfly上都没有问题 但是在Tomcat上我们已经在JBoos上配置了工作日志配置,它不再起作用了。

我尝试过几种不同的建议解决方案:
https://stackoverflow.com/a/21887529/3997870
https://stackoverflow.com/a/23080264/3997870

我发现最好的是添加到我的项目WEB-INF / jboss-deployment-structure.xml与

<jboss-deployment-structure>
 <deployment>
  <!-- exclude-subsystem prevents a subsystems deployment unit processors running on a deployment -->
  <!-- which gives basically the same effect as removing the subsystem, but it only affects single deployment -->
  <exclude-subsystems>
   <subsystem name="logging" />
  </exclude-subsystems>
 </deployment>
</jboss-deployment-structure>

但它仍然没有完全解决问题。在日志中,我有两次相同的行(不是因为在Tomcat工作正常时的logback配置),还有关于时间,级别,线程的双重信息在第一条记录中打印。

[2014-11-26 15:28:42,605] [INFO ] [MSC service thread 1-3        ] [stdout] [NONE      ] [2014-11-26 15:28:42.605  INFO 8228 --- [vice thread 1-3] o.s.boot.SpringApplication               : Starting application on LCJLT306 with PID 8228 (started by Piotr.Konczak in D:\servers\wildfly-8.2.0.Final\bin)
]
[2014-11-26 15:28:42,605] [INFO ] [MSC service thread 1-3        ] [o.s.boot.SpringApplication] [NONE      ] [Starting application on LCJLT306 with PID 8228 (started by Piotr.Konczak in D:\servers\wildfly-8.2.0.Final\bin)]

正如你在上面的例子中看到的那样,第一条记录包含了某些额外的时间戳,级别和线程(我想在一些重定向期间由Wildfly添加),而第二条线是正确的和预期的。

我的logback配置有两部分 - 第一个内部应用程序和第二个外部应用程序,可以在环境中重新配置。)
在类路径内:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <include file="/opt/appName/config/appNameLogConfig.xml" />
</configuration>

在应用程序之外(包括一个):

<?xml version="1.0" encoding="UTF-8"?>
<included>

    <property name="DESTINATION_FOLDER" value="/opt/appName/logs" />
    <property name="FILE_NAME" value="AppName" />

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${DESTINATION_FOLDER}/${FILE_NAME}.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--daily rollover-->
            <fileNamePattern>${DESTINATION_FOLDER}/${FILE_NAME}.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>

        <encoder>
            <pattern>%-5level %date %-30thread %-30logger{30} [%-10mdc{requestId:-NONE}] %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="org.springframework" level="INFO"/>
    <logger name="org.hibernate" level="INFO"/>
    <logger name="com.wordnik" level="INFO"/>
    <logger name="com.mangofactory" level="INFO"/>
    <logger name="com.company.appName" level="INFO"/>

    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</included>

有没有人看到可能的原因或配置错误?

2 个答案:

答案 0 :(得分:0)

我知道它有点迟了但是,如果你们中的一些人遇到这个问题,另一种方法是:不要禁用整个日志记录子系统,而只是排除JBoss / Wildfly提供的slf4j库。 ,使用spring-boot使用的那个。

<jboss-deployment-structure>
  <deployment>
    <exclusions>
      <module name='org.slf4j'/>
      <module name='org.slf4j.impl'/>
    </exclusions>
  </deployment>
</jboss-deployment-structure>

希望帮助某人。

答案 1 :(得分:0)

我使用的是自己的日志记录配置log4j2 xml而不是spring的日志记录,Wildfly遇到了同样的问题。我评论了整个子系统的基本原理。