Commit 2d2832dbe98967a661323dd0a3fdc1607106b983
1 parent
4446218f
优化各个配置启动顺序
Showing
19 changed files
with
50 additions
and
11 deletions
src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
| @@ -2,6 +2,7 @@ package com.genersoft.iot.vmp.conf; | @@ -2,6 +2,7 @@ package com.genersoft.iot.vmp.conf; | ||
| 2 | 2 | ||
| 3 | import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; | 3 | import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; |
| 4 | import com.genersoft.iot.vmp.utils.DateUtil; | 4 | import com.genersoft.iot.vmp.utils.DateUtil; |
| 5 | +import org.junit.jupiter.api.Order; | ||
| 5 | import org.slf4j.Logger; | 6 | import org.slf4j.Logger; |
| 6 | import org.slf4j.LoggerFactory; | 7 | import org.slf4j.LoggerFactory; |
| 7 | import org.springframework.beans.factory.annotation.Value; | 8 | import org.springframework.beans.factory.annotation.Value; |
| @@ -14,6 +15,7 @@ import java.util.regex.Pattern; | @@ -14,6 +15,7 @@ import java.util.regex.Pattern; | ||
| 14 | 15 | ||
| 15 | 16 | ||
| 16 | @Configuration("mediaConfig") | 17 | @Configuration("mediaConfig") |
| 18 | +@Order(0) | ||
| 17 | public class MediaConfig{ | 19 | public class MediaConfig{ |
| 18 | 20 | ||
| 19 | private final static Logger logger = LoggerFactory.getLogger(MediaConfig.class); | 21 | private final static Logger logger = LoggerFactory.getLogger(MediaConfig.class); |
src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java
| @@ -5,6 +5,7 @@ import com.genersoft.iot.vmp.service.IMediaServerService; | @@ -5,6 +5,7 @@ import com.genersoft.iot.vmp.service.IMediaServerService; | ||
| 5 | import org.apache.http.HttpHost; | 5 | import org.apache.http.HttpHost; |
| 6 | import org.apache.http.HttpRequest; | 6 | import org.apache.http.HttpRequest; |
| 7 | import org.apache.http.HttpResponse; | 7 | import org.apache.http.HttpResponse; |
| 8 | +import org.junit.jupiter.api.Order; | ||
| 8 | import org.mitre.dsmiley.httpproxy.ProxyServlet; | 9 | import org.mitre.dsmiley.httpproxy.ProxyServlet; |
| 9 | import org.slf4j.Logger; | 10 | import org.slf4j.Logger; |
| 10 | import org.slf4j.LoggerFactory; | 11 | import org.slf4j.LoggerFactory; |
| @@ -25,6 +26,7 @@ import java.net.ConnectException; | @@ -25,6 +26,7 @@ import java.net.ConnectException; | ||
| 25 | */ | 26 | */ |
| 26 | @SuppressWarnings(value = {"rawtypes", "unchecked"}) | 27 | @SuppressWarnings(value = {"rawtypes", "unchecked"}) |
| 27 | @Configuration | 28 | @Configuration |
| 29 | +@Order(1) | ||
| 28 | public class ProxyServletConfig { | 30 | public class ProxyServletConfig { |
| 29 | 31 | ||
| 30 | private final static Logger logger = LoggerFactory.getLogger(ProxyServletConfig.class); | 32 | private final static Logger logger = LoggerFactory.getLogger(ProxyServletConfig.class); |
src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java
| 1 | package com.genersoft.iot.vmp.conf; | 1 | package com.genersoft.iot.vmp.conf; |
| 2 | 2 | ||
| 3 | 3 | ||
| 4 | +import org.junit.jupiter.api.Order; | ||
| 4 | import org.springframework.boot.context.properties.ConfigurationProperties; | 5 | import org.springframework.boot.context.properties.ConfigurationProperties; |
| 5 | import org.springframework.stereotype.Component; | 6 | import org.springframework.stereotype.Component; |
| 6 | import org.springframework.util.ObjectUtils; | 7 | import org.springframework.util.ObjectUtils; |
| 7 | 8 | ||
| 8 | @Component | 9 | @Component |
| 9 | @ConfigurationProperties(prefix = "sip", ignoreInvalidFields = true) | 10 | @ConfigurationProperties(prefix = "sip", ignoreInvalidFields = true) |
| 11 | +@Order(0) | ||
| 10 | public class SipConfig { | 12 | public class SipConfig { |
| 11 | 13 | ||
| 12 | private String ip; | 14 | private String ip; |
src/main/java/com/genersoft/iot/vmp/conf/SipPlatformRunner.java
| @@ -18,7 +18,7 @@ import java.util.List; | @@ -18,7 +18,7 @@ import java.util.List; | ||
| 18 | * @author lin | 18 | * @author lin |
| 19 | */ | 19 | */ |
| 20 | @Component | 20 | @Component |
| 21 | -@Order(value=3) | 21 | +@Order(value=13) |
| 22 | public class SipPlatformRunner implements CommandLineRunner { | 22 | public class SipPlatformRunner implements CommandLineRunner { |
| 23 | 23 | ||
| 24 | @Autowired | 24 | @Autowired |
src/main/java/com/genersoft/iot/vmp/conf/SpringDocConfig.java
| 1 | package com.genersoft.iot.vmp.conf; | 1 | package com.genersoft.iot.vmp.conf; |
| 2 | 2 | ||
| 3 | -import io.swagger.v3.oas.models.ExternalDocumentation; | ||
| 4 | import io.swagger.v3.oas.models.OpenAPI; | 3 | import io.swagger.v3.oas.models.OpenAPI; |
| 5 | import io.swagger.v3.oas.models.info.Contact; | 4 | import io.swagger.v3.oas.models.info.Contact; |
| 6 | import io.swagger.v3.oas.models.info.Info; | 5 | import io.swagger.v3.oas.models.info.Info; |
| 7 | import io.swagger.v3.oas.models.info.License; | 6 | import io.swagger.v3.oas.models.info.License; |
| 8 | -import io.swagger.v3.oas.models.media.StringSchema; | ||
| 9 | -import io.swagger.v3.oas.models.parameters.HeaderParameter; | 7 | +import org.junit.jupiter.api.Order; |
| 10 | import org.springdoc.core.GroupedOpenApi; | 8 | import org.springdoc.core.GroupedOpenApi; |
| 11 | -import org.springdoc.core.SpringDocConfigProperties; | ||
| 12 | import org.springframework.beans.factory.annotation.Value; | 9 | import org.springframework.beans.factory.annotation.Value; |
| 13 | import org.springframework.context.annotation.Bean; | 10 | import org.springframework.context.annotation.Bean; |
| 14 | import org.springframework.context.annotation.Configuration; | 11 | import org.springframework.context.annotation.Configuration; |
| @@ -17,6 +14,7 @@ import org.springframework.context.annotation.Configuration; | @@ -17,6 +14,7 @@ import org.springframework.context.annotation.Configuration; | ||
| 17 | * @author lin | 14 | * @author lin |
| 18 | */ | 15 | */ |
| 19 | @Configuration | 16 | @Configuration |
| 17 | +@Order(1) | ||
| 20 | public class SpringDocConfig { | 18 | public class SpringDocConfig { |
| 21 | 19 | ||
| 22 | @Value("${doc.enabled: true}") | 20 | @Value("${doc.enabled: true}") |
src/main/java/com/genersoft/iot/vmp/conf/ThreadPoolTaskConfig.java
| 1 | package com.genersoft.iot.vmp.conf; | 1 | package com.genersoft.iot.vmp.conf; |
| 2 | 2 | ||
| 3 | +import org.junit.jupiter.api.Order; | ||
| 3 | import org.springframework.context.annotation.Bean; | 4 | import org.springframework.context.annotation.Bean; |
| 4 | import org.springframework.context.annotation.Configuration; | 5 | import org.springframework.context.annotation.Configuration; |
| 5 | import org.springframework.scheduling.annotation.EnableAsync; | 6 | import org.springframework.scheduling.annotation.EnableAsync; |
| @@ -12,6 +13,7 @@ import java.util.concurrent.ThreadPoolExecutor; | @@ -12,6 +13,7 @@ import java.util.concurrent.ThreadPoolExecutor; | ||
| 12 | * @author lin | 13 | * @author lin |
| 13 | */ | 14 | */ |
| 14 | @Configuration | 15 | @Configuration |
| 16 | +@Order(1) | ||
| 15 | @EnableAsync(proxyTargetClass = true) | 17 | @EnableAsync(proxyTargetClass = true) |
| 16 | public class ThreadPoolTaskConfig { | 18 | public class ThreadPoolTaskConfig { |
| 17 | 19 |
src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java
| 1 | package com.genersoft.iot.vmp.conf; | 1 | package com.genersoft.iot.vmp.conf; |
| 2 | 2 | ||
| 3 | +import org.junit.jupiter.api.Order; | ||
| 3 | import org.springframework.boot.context.properties.ConfigurationProperties; | 4 | import org.springframework.boot.context.properties.ConfigurationProperties; |
| 4 | import org.springframework.stereotype.Component; | 5 | import org.springframework.stereotype.Component; |
| 5 | 6 | ||
| @@ -11,6 +12,7 @@ import java.util.List; | @@ -11,6 +12,7 @@ import java.util.List; | ||
| 11 | */ | 12 | */ |
| 12 | @Component | 13 | @Component |
| 13 | @ConfigurationProperties(prefix = "user-settings", ignoreInvalidFields = true) | 14 | @ConfigurationProperties(prefix = "user-settings", ignoreInvalidFields = true) |
| 15 | +@Order(0) | ||
| 14 | public class UserSetting { | 16 | public class UserSetting { |
| 15 | 17 | ||
| 16 | private Boolean savePositionHistory = Boolean.FALSE; | 18 | private Boolean savePositionHistory = Boolean.FALSE; |
src/main/java/com/genersoft/iot/vmp/conf/VersionConfig.java
| 1 | package com.genersoft.iot.vmp.conf; | 1 | package com.genersoft.iot.vmp.conf; |
| 2 | 2 | ||
| 3 | +import org.junit.jupiter.api.Order; | ||
| 3 | import org.springframework.boot.context.properties.ConfigurationProperties; | 4 | import org.springframework.boot.context.properties.ConfigurationProperties; |
| 4 | import org.springframework.stereotype.Component; | 5 | import org.springframework.stereotype.Component; |
| 5 | 6 | ||
| 6 | @Component | 7 | @Component |
| 7 | @ConfigurationProperties(prefix = "version") | 8 | @ConfigurationProperties(prefix = "version") |
| 9 | +@Order(0) | ||
| 8 | public class VersionConfig { | 10 | public class VersionConfig { |
| 9 | 11 | ||
| 10 | private String version; | 12 | private String version; |
src/main/java/com/genersoft/iot/vmp/conf/redis/RedisConfig.java
| @@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; | @@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; | ||
| 7 | import org.springframework.cache.annotation.CachingConfigurerSupport; | 7 | import org.springframework.cache.annotation.CachingConfigurerSupport; |
| 8 | import org.springframework.context.annotation.Bean; | 8 | import org.springframework.context.annotation.Bean; |
| 9 | import org.springframework.context.annotation.Configuration; | 9 | import org.springframework.context.annotation.Configuration; |
| 10 | +import org.springframework.core.annotation.Order; | ||
| 10 | import org.springframework.data.redis.connection.RedisConnectionFactory; | 11 | import org.springframework.data.redis.connection.RedisConnectionFactory; |
| 11 | import org.springframework.data.redis.core.RedisTemplate; | 12 | import org.springframework.data.redis.core.RedisTemplate; |
| 12 | import org.springframework.data.redis.listener.PatternTopic; | 13 | import org.springframework.data.redis.listener.PatternTopic; |
| @@ -23,6 +24,7 @@ import com.genersoft.iot.vmp.utils.redis.FastJsonRedisSerializer; | @@ -23,6 +24,7 @@ import com.genersoft.iot.vmp.utils.redis.FastJsonRedisSerializer; | ||
| 23 | * | 24 | * |
| 24 | */ | 25 | */ |
| 25 | @Configuration | 26 | @Configuration |
| 27 | +@Order(value=1) | ||
| 26 | public class RedisConfig extends CachingConfigurerSupport { | 28 | public class RedisConfig extends CachingConfigurerSupport { |
| 27 | 29 | ||
| 28 | @Autowired | 30 | @Autowired |
src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java
| 1 | package com.genersoft.iot.vmp.conf.security; | 1 | package com.genersoft.iot.vmp.conf.security; |
| 2 | 2 | ||
| 3 | import com.genersoft.iot.vmp.conf.UserSetting; | 3 | import com.genersoft.iot.vmp.conf.UserSetting; |
| 4 | +import org.junit.jupiter.api.Order; | ||
| 4 | import org.slf4j.Logger; | 5 | import org.slf4j.Logger; |
| 5 | import org.slf4j.LoggerFactory; | 6 | import org.slf4j.LoggerFactory; |
| 6 | import org.springframework.beans.factory.annotation.Autowired; | 7 | import org.springframework.beans.factory.annotation.Autowired; |
| @@ -25,6 +26,7 @@ import java.util.List; | @@ -25,6 +26,7 @@ import java.util.List; | ||
| 25 | @Configuration | 26 | @Configuration |
| 26 | @EnableWebSecurity | 27 | @EnableWebSecurity |
| 27 | @EnableGlobalMethodSecurity(prePostEnabled = true) | 28 | @EnableGlobalMethodSecurity(prePostEnabled = true) |
| 29 | +@Order(1) | ||
| 28 | public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | 30 | public class WebSecurityConfig extends WebSecurityConfigurerAdapter { |
| 29 | 31 | ||
| 30 | private final static Logger logger = LoggerFactory.getLogger(WebSecurityConfig.class); | 32 | private final static Logger logger = LoggerFactory.getLogger(WebSecurityConfig.class); |
src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
| @@ -19,7 +19,7 @@ import java.util.*; | @@ -19,7 +19,7 @@ import java.util.*; | ||
| 19 | import java.util.concurrent.ConcurrentHashMap; | 19 | import java.util.concurrent.ConcurrentHashMap; |
| 20 | 20 | ||
| 21 | @Component | 21 | @Component |
| 22 | -@Order(value=1) | 22 | +@Order(value=10) |
| 23 | public class SipLayer implements CommandLineRunner { | 23 | public class SipLayer implements CommandLineRunner { |
| 24 | 24 | ||
| 25 | private final static Logger logger = LoggerFactory.getLogger(SipLayer.class); | 25 | private final static Logger logger = LoggerFactory.getLogger(SipLayer.class); |
src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java
| @@ -28,7 +28,7 @@ import java.util.Map; | @@ -28,7 +28,7 @@ import java.util.Map; | ||
| 28 | * @author lin | 28 | * @author lin |
| 29 | */ | 29 | */ |
| 30 | @Component | 30 | @Component |
| 31 | -@Order(value=4) | 31 | +@Order(value=14) |
| 32 | public class SipRunner implements CommandLineRunner { | 32 | public class SipRunner implements CommandLineRunner { |
| 33 | 33 | ||
| 34 | @Autowired | 34 | @Autowired |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
| @@ -38,6 +38,7 @@ import javax.sip.header.FromHeader; | @@ -38,6 +38,7 @@ import javax.sip.header.FromHeader; | ||
| 38 | import javax.sip.message.Response; | 38 | import javax.sip.message.Response; |
| 39 | import java.text.ParseException; | 39 | import java.text.ParseException; |
| 40 | import java.util.Iterator; | 40 | import java.util.Iterator; |
| 41 | +import java.util.List; | ||
| 41 | import java.util.concurrent.ConcurrentLinkedQueue; | 42 | import java.util.concurrent.ConcurrentLinkedQueue; |
| 42 | 43 | ||
| 43 | /** | 44 | /** |
| @@ -150,6 +151,17 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements | @@ -150,6 +151,17 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements | ||
| 150 | Element deviceIdElement = rootElement.element("DeviceID"); | 151 | Element deviceIdElement = rootElement.element("DeviceID"); |
| 151 | String channelId = deviceIdElement.getTextTrim().toString(); | 152 | String channelId = deviceIdElement.getTextTrim().toString(); |
| 152 | Device device = redisCatchStorage.getDevice(deviceId); | 153 | Device device = redisCatchStorage.getDevice(deviceId); |
| 154 | + | ||
| 155 | + if (device == null) { | ||
| 156 | + // 根据通道id查询设备Id | ||
| 157 | + List<Device> deviceList = deviceChannelService.getDeviceByChannelId(channelId); | ||
| 158 | + if (deviceList.size() > 0) { | ||
| 159 | + device = deviceList.get(0); | ||
| 160 | + }else { | ||
| 161 | + logger.warn("[mobilePosition移动位置Notify] 未找到通道{}所属的设备", channelId); | ||
| 162 | + return; | ||
| 163 | + } | ||
| 164 | + } | ||
| 153 | if (device != null) { | 165 | if (device != null) { |
| 154 | if (!ObjectUtils.isEmpty(device.getName())) { | 166 | if (!ObjectUtils.isEmpty(device.getName())) { |
| 155 | mobilePosition.setDeviceName(device.getName()); | 167 | mobilePosition.setDeviceName(device.getName()); |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
| 1 | package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl; | 1 | package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl; |
| 2 | 2 | ||
| 3 | -import com.genersoft.iot.vmp.conf.ServiceInfo; | ||
| 4 | import com.genersoft.iot.vmp.conf.SipConfig; | 3 | import com.genersoft.iot.vmp.conf.SipConfig; |
| 5 | import com.genersoft.iot.vmp.conf.UserSetting; | 4 | import com.genersoft.iot.vmp.conf.UserSetting; |
| 6 | import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper; | 5 | import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper; |
| @@ -92,7 +91,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen | @@ -92,7 +91,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen | ||
| 92 | // } | 91 | // } |
| 93 | // } | 92 | // } |
| 94 | 93 | ||
| 95 | - System.out.println(ServiceInfo.getServerPort()); | 94 | +// System.out.println(ServiceInfo.getServerPort()); |
| 96 | SIPRequest request = (SIPRequest)evt.getRequest(); | 95 | SIPRequest request = (SIPRequest)evt.getRequest(); |
| 97 | Response response = null; | 96 | Response response = null; |
| 98 | boolean passwordCorrect = false; | 97 | boolean passwordCorrect = false; |
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
| @@ -25,7 +25,7 @@ import java.util.Set; | @@ -25,7 +25,7 @@ import java.util.Set; | ||
| 25 | import java.util.concurrent.ConcurrentHashMap; | 25 | import java.util.concurrent.ConcurrentHashMap; |
| 26 | 26 | ||
| 27 | @Component | 27 | @Component |
| 28 | -@Order(value=2) | 28 | +@Order(value=12) |
| 29 | public class ZLMRunner implements CommandLineRunner { | 29 | public class ZLMRunner implements CommandLineRunner { |
| 30 | 30 | ||
| 31 | private final static Logger logger = LoggerFactory.getLogger(ZLMRunner.class); | 31 | private final static Logger logger = LoggerFactory.getLogger(ZLMRunner.class); |
src/main/java/com/genersoft/iot/vmp/service/IDeviceChannelService.java
| @@ -51,4 +51,9 @@ public interface IDeviceChannelService { | @@ -51,4 +51,9 @@ public interface IDeviceChannelService { | ||
| 51 | * 数据位置信息格式处理 | 51 | * 数据位置信息格式处理 |
| 52 | */ | 52 | */ |
| 53 | boolean updateAllGps(Device device); | 53 | boolean updateAllGps(Device device); |
| 54 | + | ||
| 55 | + /** | ||
| 56 | + * 查询通道所属的设备 | ||
| 57 | + */ | ||
| 58 | + List<Device> getDeviceByChannelId(String channelId); | ||
| 54 | } | 59 | } |
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceChannelServiceImpl.java
| @@ -204,4 +204,9 @@ public class DeviceChannelServiceImpl implements IDeviceChannelService { | @@ -204,4 +204,9 @@ public class DeviceChannelServiceImpl implements IDeviceChannelService { | ||
| 204 | 204 | ||
| 205 | return true; | 205 | return true; |
| 206 | } | 206 | } |
| 207 | + | ||
| 208 | + @Override | ||
| 209 | + public List<Device> getDeviceByChannelId(String channelId) { | ||
| 210 | + return channelMapper.getDeviceByChannelId(channelId); | ||
| 211 | + } | ||
| 207 | } | 212 | } |
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
| 1 | package com.genersoft.iot.vmp.storager.dao; | 1 | package com.genersoft.iot.vmp.storager.dao; |
| 2 | 2 | ||
| 3 | +import com.genersoft.iot.vmp.gb28181.bean.Device; | ||
| 3 | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; | 4 | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; |
| 4 | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannelInPlatform; | 5 | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannelInPlatform; |
| 5 | import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo; | 6 | import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo; |
| @@ -371,4 +372,7 @@ public interface DeviceChannelMapper { | @@ -371,4 +372,7 @@ public interface DeviceChannelMapper { | ||
| 371 | "and longitude != 0 " + | 372 | "and longitude != 0 " + |
| 372 | "and (latitudeGcj02 = 0 or latitudeWgs84 = 0 or longitudeWgs84 = 0 or longitudeGcj02 = 0)") | 373 | "and (latitudeGcj02 = 0 or latitudeWgs84 = 0 or longitudeWgs84 = 0 or longitudeGcj02 = 0)") |
| 373 | List<DeviceChannel> getChannelsWithoutTransform(String deviceId); | 374 | List<DeviceChannel> getChannelsWithoutTransform(String deviceId); |
| 375 | + | ||
| 376 | + @Select("select de.* from device de left join device_channel dc on de.deviceId = dc.deviceId where dc.channelId=#{channelId}") | ||
| 377 | + List<Device> getDeviceByChannelId(String channelId); | ||
| 374 | } | 378 | } |
src/main/resources/logback-spring-local.xml
| @@ -4,7 +4,7 @@ | @@ -4,7 +4,7 @@ | ||
| 4 | <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/> | 4 | <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/> |
| 5 | <property name="LOG_HOME" value="logs" /> | 5 | <property name="LOG_HOME" value="logs" /> |
| 6 | 6 | ||
| 7 | - <substitutionProperty name="log.pattern" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr(%-80.80logger{79}){cyan} %clr(:){faint} %m%n%wEx"/> | 7 | + <substitutionProperty name="log.pattern" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr(%-1.30logger{0}){cyan} %clr(:){faint} %m%n%wEx"/> |
| 8 | 8 | ||
| 9 | <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/> | 9 | <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/> |
| 10 | <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/> | 10 | <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/> |