本来想用一节就写完SpringBootAdmin的,但随着研究的深入发现一节应该是不够的,网上的资料也不会非常系统,官网的例子有些已经好几年没更新了,所以接下来还是系统性的来写下吧
第一节 完成基础配置,暴露所有端点
 第二节 给SpringBootAdmin的server端加入spring security安全控制
 第三节 给SpringBootAdmin的clientr端加入spring security安全控制
 第四节 配置SpringBootAdmin日志管理
 第五节 配置SpringBootAdmin电子邮件通知
参考文章:
 Spring Boot Admin 动态修改日志级别的方法步骤
 Spring Boot Admin在线查看spring boot后台日志
一、配置logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 日志存放路径 -->
    <property name="log.path" value="logs/sbaclient01" />
    <!-- 日志输出格式 -->
    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%highlight${log.pattern}</pattern>
        </encoder>
    </appender>
    <!-- 系统日志输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 30天 -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 30天 -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- 系统模块日志级别控制  -->
    <logger name="com.example" level="info" />
    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="warn" />
    <!--myibatis log configure -->
    <logger name="com.apache.ibatis" level="warn" />
    <logger name="java.sql.Connection" level="warn" />
    <logger name="java.sql.Statement" level="warn" />
    <logger name="java.sql.PreparedStatement" level="warn" />
    <root level="info">
        <appender-ref ref="console" />
    </root>
    <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="file_info" />
        <appender-ref ref="file_error" />
    </root>
</configuration>
二、增加配置项
# log
logging.file.name=logs/sbaclient01/info.log
经过上面两项配置重启,就可以在server端看client的日志了
 我们这里创建一个测试类HelloController
@RestController
@RequestMapping("/test")
public class HelloController {
    private static final Logger log = LoggerFactory.getLogger(HelloController.class);
    @GetMapping("/hello")
    public String hello(){
        String s = "hello," + new Date();
        log.error("error"+s);
        log.info("info"+s);
        return s;
    }
}
为了方便访问,security配置做了点修改
@Configuration
public class SecurityConfig {
    @Bean
    protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        return http.authorizeHttpRequests((authorizeRequests) -> authorizeRequests
                .requestMatchers(new AntPathRequestMatcher("/test/hello"))
                .permitAll()
                .anyRequest()
                .authenticated())
                .formLogin()
                .and()
                .httpBasic(Customizer.withDefaults())
                .csrf().disable().build();
    }
}
访问下 http://localhost:9091/test/hello 就会打印日志了。

三、动态配置日志级别
我们发现日志模块里面还有日志配置的菜单,这个其实比较有用,可以动态设置日志的打印级别。目前设置的INFO,所以info和error都答应了。如果把INFO改成ERROR
  我们再试下效果:
我们再试下效果:
  看只打印了ERROR的日志,INFO的日志没打印。
看只打印了ERROR的日志,INFO的日志没打印。



















