一、前言
Spring Boot Admin 有一个强大的功能,就是实时在线查看日志,并且可以动态更改日志级别。
二、代码演示
- 2.1 pom.xml 依赖添加(版本2.1.3)
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-client</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
</dependency>
- 2.2 logback.xml 日志配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="CONTEXT_NAME" value="demo-server"/>
<property name="LOG_PATH" value="logs"/>
<property name="MAX_FILE_SIZE" value="100MB"/>
<property name="MAX_HISTORY" value="30"/>
<contextName>${CONTEXT_NAME}</contextName>
<!-- 彩色日志 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 控制台日志样式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} [%L] %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 文件日志样式 -->
<property name="FILE_LOG_PATTERN"
value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } [%t] %-40.40logger{39} %L : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 禁用logback自身日志输出 -->
<statusListener class="ch.qos.logback.core.status.NopStatusListener"/>
<!-- 控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 运行日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_PATH}/demo-server.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/demo-server-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
<maxHistory>${MAX_HISTORY}</maxHistory>
</rollingPolicy>
</appender>
<!-- 错误日志文件 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_PATH}/demo-server-error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/sznsh-business-server-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
<maxHistory>${MAX_HISTORY}</maxHistory>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 异步写日志 -->
<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>1024</queueSize>
<appender-ref ref="FILE"/>
</appender>
<appender name="ASYNC_ERROR_FILE" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>1024</queueSize>
<appender-ref ref="ERROR_FILE"/>
</appender>
<!-- 不同环境的日志级别配置 -->
<springProfile name="local">
<logger name="com.test.demo" level="DEBUG"/>
</springProfile>
<!-- 解决SpringBootAdmin错误日志问题 -->
<logger name="org.apache.catalina.connector.CoyoteAdapter" level="OFF"/>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ASYNC_FILE"/>
<appender-ref ref="ASYNC_ERROR_FILE"/>
</root>
</configuration>
注意:其中重要的是<appender name="FILE" /> ,如果不写将导致springbootadmin找不到文件,无法查看日志
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
- 2.3 Application.java 添加@EnableAdminServer
@SpringBootApplication
@EnableAdminServer
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- 2.4 application.yum 配置
########################################################
### spring 配置
########################################################
spring:
application:
name: demo-server
http:
encoding:
charset: UTF-8
enabled: true
force: true
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
banner:
charset: UTF-8
location: classpath:config/banner.txt
########################################################
### 访问路径、端口tomcat
########################################################
server:
port: 8080
servlet:
contextPath: /demo-server
tomcat:
max-threads: 1000
min-spare-threads: 30
uri-encoding: UTF-8
############################## Spring boot admin start ##############################
---
spring:
boot:
admin:
client:
url: http://localhost:${server.port}/${server.servlet.context-path}
# 开启和暴露所有端点
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
logfile:
enabled: true #可在线查看日志
########################################################
### Log configuration
### 方便Spring Boot Admin页面上实时查看日志
### logback.xml中有详细的日志配置
########################################################
logging:
config: classpath:config/logback.xml
level:
root: ${LOG_LEVEL:INFO}
com.test.demo: info
# 方便Spring Boot Admin页面上实时查看日志
file: logs/demo-server.log
其中banner.txt可自行设计,主要用于启动的时候界面展示,也可使用默认springboot的图标
三、SpringBoot Admin导致swagger-ui.html访问不了
在添加spring boot admin后项目有可能会遇到swagger-ui打不开的情况,需要在WebMvcConfigurer的集成类中添加以下配置:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
/**
* 页面路径配置
*
* @param configure 路径配置
*/
@Override
public void configurePathMatch(PathMatchConfigurer configure) {
// 忽视路径中的 .
configure.setUseSuffixPatternMatch(false);
}
/**
* 多时区转换 根据页面路径参数转化 ?lang=en_US
*
* @return LocaleChangeInterceptor
*/
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
/**
* 静态资源配置
*
* @param registry ResourceHandlerRegistry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// common resource加载顺序
registry.addResourceHandler("/**")
.addResourceLocations("file:./static/")
.addResourceLocations("classpath:/resources/")
.addResourceLocations("classpath:/static/")
.addResourceLocations("classpath:/public/")
.addResourceLocations("classpath:/META-INF/resources/");
// web jars swagger-ui knife4j
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
主要是重写addResourceHandlers方法,其他有需要的可按需添加。
更多推荐
SpringBoot整合 Spring Boot Admin - 在线动态查看日志
发布评论