Spring Boot和JBoss 8 Wildfly日志配置应用程序 [英] Spring boot and JBoss 8 Wildfly log configuration application

查看:135
本文介绍了Spring Boot和JBoss 8 Wildfly日志配置应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个准备作为WAR的Spring引导应用程序.它可以毫无问题地部署在Tomcat 8(嵌入式或独立)以及JBoss 8 Wildfly上.
但是,在Tomcat上时,我们已经在JBoos上配置了有效的logback配置,因此它不再起作用.

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

我发现最好的方法是使用

I have a Spring boot application prepare to be a WAR. It deploys without problems on Tomcat 8 (embedded or standalone) as well as on JBoss 8 Wildfly.
But while on Tomcat we have had configured working logback configuration on JBoos it does not work any more.

I have tried few different suggested solutions:
https://stackoverflow.com/a/21887529/3997870
https://stackoverflow.com/a/23080264/3997870

The best which I have found was to add to my project WEB-INF/jboss-deployment-structure.xml with

<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配置),并且在第一条记录中还打印了有关时间,级别和线程的双重信息.

but still it does not solve problem completely. In the logs I have same line twice (not because of logback configuration because on Tomcat worked properly) and also double info about time, level, thread was printed in first record.

[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添加的),而第二行是正确的并且是预期的.

As you can see in above example first record contains somehow additional timestamp, level and thread (I guess add by Wildfly during some redirect) while the second line is proper and expected.

我的登录配置包含2个部分-第一个内部应用程序和第二个外部应用程序,以便可以在环境中进行重新配置.
在类路径中:

My logback config has 2 parts - 1st inside app and 2nd outside app to make it possible to reconfigure in environments).
Inside the classpath:

<?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>

应用外部(包括一个):

Outside the app (included one):

<?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>

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

推荐答案

我知道有些晚了,但是,如果你们中的一些人遇到这个问题,另一种选择是:不要禁用整个日志子系统,而只是禁用排除JBoss/Wildfly提供的slf4j库,以使用spring-boot所使用的库.

I know it is a little bit late but, if some of you face this problem, an alternative is: Don't disable the whole logging subsystem, instead just exclude slf4j libraries provided by JBoss/Wildfly, to use the one used by spring-boot.

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

希望对某人有帮助.

这篇关于Spring Boot和JBoss 8 Wildfly日志配置应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆