SpringBoot2.1(5)集成Swagger-UI、使用自定义日志

《回顾》

上一篇,详细介绍集成Mybatis、Druid及使用Druid监控功能,对应用进行基本的监控。不知道你是否亲自试过。

 

本篇,将介绍一款接口管理及在线测试神器,Swagger-UI。另外,会讲解到自定日志。意思就是,你可以把SQL单独打印到一个日志文件里,把接口信息打印到一个日志文件里,页面信息打印到一个日志文件里。

 

先上个图,看下Swagger效果

SpringBoot2.1(5)集成Swagger-UI、使用自定义日志_第1张图片

 

 

一、集成Swagger2

1、Maven依赖


   io.springfox
   springfox-swagger2
   2.9.2


   io.springfox
   springfox-swagger-ui
   2.9.2

 

 

2、新建配置类

此类用于配置Swagger信息。也就说,和SpringBoot集成,全靠它了。

@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport{
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
    @Bean
    public Docket api(){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("v1")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.zhou.springbootz05"))
                .paths(PathSelectors.any())
                .build()
                .apiInfo(apiInfo());
    }
    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("Spring Boot中使用Swagger2构建RESTful APIs")
                .description("spring boot , swagger2")
                .contact(new Contact("zhoudong", "http://blog.csdn.net/zdshare", "[email protected]"))
                .version("1.0")
                .build();
    }
}

 

3、使用方法

配置上面的类以后,包名下,所有的Controller都会自动被扫描到Swagger-UI中。

即使不做任何配置,也可以简单的当作在线测试工具使用。但是,建议还是做一些最基本的配置,起到文档管理的作用。

参照下面代码

@ApiOperation(value = "获取用户", notes = "获取用户", httpMethod = "GET")
@ApiImplicitParams({
        @ApiImplicitParam(name = "userId", value = "用户ID", required = true),
        @ApiImplicitParam(name = "userCode", value = "用户Code")
})
@GetMapping("/load_user")
public Map loadUser(@RequestParam String userId, @RequestParam(required = false) String userCode){
    log.info("【load_user】获取到参数:userName:{},userCode:{}",userId,userCode);
    if(StringUtils.isEmpty(userCode)) userCode = "";
    return Map.of("userCode",userCode,"userId",userId,"time", System.currentTimeMillis());
}

 

注释介绍:

@ApiOperation:用在方法上,起到说明方法的作用

  • value:URL路径介绍

  • notes:方法说明

  • httpMethod:请求方式,GET、POST、PUT、DELETE、OPTIONS、OPTIONS

@ApiImplicitParams:用在方法上包含一组参数说明;

@ApiImplicitParam:用在 @ApiImplicitParams 注解中,指定一个请求参数的各个方面

  • paramType:参数放在哪个地方

  • name:参数代表的含义

  • value:参数名称

  • dataType: 参数类型,有String/int,无用

  • required : 是否必要

  • defaultValue:参数的默认值

更多参数,请参考官方文档,这些参数,可以满足日常开发中99%的需求。

 

4、使用Swagger-UI测试接口

启动应用,访问:

http://localhost:8080/swagger-ui.html

 

以红框里面的接口为例

SpringBoot2.1(5)集成Swagger-UI、使用自定义日志_第2张图片

 

接口有2个参数,userId必填、userCode非必填。查看Swagger-UI显示情况。

SpringBoot2.1(5)集成Swagger-UI、使用自定义日志_第3张图片

点击蓝色框中的“Try it out”

 

SpringBoot2.1(5)集成Swagger-UI、使用自定义日志_第4张图片

输入必填项, 点击蓝色框中的“Excute”

 

SpringBoot2.1(5)集成Swagger-UI、使用自定义日志_第5张图片

 

返回结果,和上面代码逻辑里面的一致。

 

有了它,你还用担心几十、几百个项目接口管理问题吗?

 

Swagger-UI 将会运用于未来每一个演示项目中。

 

二、多文件日志

 

生产环境中,如果把应用所有的日志,都输出到一个文件里面,对于问题排查,很不友好。

所以,通常我们会根据业务及技术模块等多个维度来区分日志文件。

简单举例:

  • 页面的输出到*-web.log

  • 接口的输出到*-api.log

  • 异常信息输出到*-error.log

  • 数据库相关的输出到*-dal.log

    ...

 

2.1 创建配置文件 

        resources/logback.xml

 

内容如下:(代码量较多,建议回复:springbootz 下载代码导入IDE查看)



  
  

  
  

   
  
     
    
        ${CONSOLE_LOG_PATTERN}
    
    
      ACCEPT
      DENY
    
  

  
  
    ${logRoot}/web.log
    
        %d{yyyy-MM-dd HH:mm:ss} [%class:%line] [%thread] - %m%n
    
    
      INFO
      ACCEPT
      DENY
    
    
      
      ${logRoot}/web.log.%d{yyyy-MM-dd}
      30
    
  

  
  
    ${logRoot}/web-error.log
    
      %d{yyyy-MM-dd HH:mm:ss} [%class:%line] [%thread] - %m%n
    
    
      ERROR
      ACCEPT
      DENY
    
    
      ${logRoot}/web-error.log.%d{yyyy-MM-dd}
      30
    
  

  
  
    ${logRoot}/dal-sql.log
    
        %d{yyyy-MM-dd HH:mm:ss} [%class:%line] [%thread] - %m%n
    
    
      DEBUG
      ACCEPT
      DENY
    
    
      ${logRoot}/dal-sql.log.%d{yyyy-MM-dd}
      30
    
  

  
  
    
    
    
   
  
  
  
    
    
    
    
  

   
    
    
    
  

 

注意:配置完该文件后,application.properties 文件中,不在需要日志相关配置。

配置完毕后,启动应用,前往日志目录下查看日志文件

 

SpringBoot2.1(5)集成Swagger-UI、使用自定义日志_第6张图片

 

通过Swagger-UI 对含有数据库操作的接口,进行一次访问。(测试 应用日志和SQL日志是否被打印到对应的文件中)

SpringBoot2.1(5)集成Swagger-UI、使用自定义日志_第7张图片

 

查看日志文件内容:

SpringBoot2.1(5)集成Swagger-UI、使用自定义日志_第8张图片

 

如此区分,如果去查询10天或者20天之前的日志,是不是就更清晰了呢?

 

博客内所有文章,每周从公众号同步一次。

文章源码均可从公众号获取。

如果您可以关注下,那就好了。

SpringBoot2.1(5)集成Swagger-UI、使用自定义日志_第9张图片

你可能感兴趣的:(Springboot)