我有一个准备成为WAR的Spring Boot应用程序。它可以在Tomcat 8(嵌入式或独立)以及JBoss 8 Wildfly上无问题部署。
但是,尽管在Tomcat上我们已经配置了可工作的logback配置,在JBoos上却不再工作了。
我尝试了一些不同的解决方案:
https://dev59.com/rWEh5IYBdhLWcg3w7nWW#21887529
https://dev59.com/JmAg5IYBdhLWcg3w3eNi#23080264
我找到的最好的方法是向项目添加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>
但这仍然不能完全解决问题。在日志中,我有一行重复出现了两次(这不是因为logback配置引起的,因为在Tomcat上可以正常工作),并且第一条记录中打印了关于时间、级别、线程的重复信息。
[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>
有人看到可能的原因或配置错误吗?