• SpringBoot日志操作及使用/在IDEA中SpringBoot怎么使用热部署/SpringBoot自动部署更新修改内容


    写在前面
    继续记录自己的SpringBoot学习之旅,这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用!

    4.日志

    1.日志基础

    1.作用
    • 编程器调试代码
    • 运营期记录信息
    2.日志级别
    • TRACE:运行堆栈信息,使用率低
    • DBUG:程序员调试代码使用
    • INFO:记录运维过程数据
    • WARN:记录运维过程报警数据
    • ERROR:记录错误堆栈信息
    • FATAL:灾难信息,合并计入ERROR
    3.代码操作
    • 添加日志记录
    @RestController  
    @RequestMapping("/books")  
    public class BookController {  
    // 创建记录日志对象  
     private static final Logger log = LoggerFactory.getLogger(BookController.class);  
     @GetMapping  
     public String testSpringBoot()  
        {  
            String str = "Spring Boot is running!";  
     System.out.println(str);  
     log.debug("debug");  
     log.info("info");  
     log.warn("warning");  
     log.error("error");  
     return str;  
     }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 用lombok中的@Slf4j简化日志对象创建代码
    @Slf4j  
    @RestController  
    @RequestMapping("/books")  
    public class BookController {  
    // 创建记录日志对象  
    //    private static final Logger log = LoggerFactory.getLogger(BookController.class);  
     @GetMapping  
     public String testSpringBoot()  
        {  
            String str = "Spring Boot is running!";  
     System.out.println(str);  
     log.debug("debug");  
     log.info("info");  
     log.warn("warning");  
     log.error("error");  
     return str;  
     }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 设置日志输出级别
    #开启DEBUG模式,输出调试信息,常用于检查系统运行状况  
    debug: true  
      
    #设置日志级别,root表示根节点,即整体应用日志级别  
    logging:  
    # 设置日志组  
     group:  
    # 自定义组名,设置当前组中所包含的包  
     	demo: com.example.controller  
      level:  
        root: info  
    # 为对应组设置日志级别  
     demo: warn
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.日志输出格式控制

    1.格式

    主要分为时间,级别,PID,所属线程,所属类名/接口名以及日志信息,如图
    ![[Pasted image 20220408112036.png]]
    其中:

    • PID,进程ID,用于标明当前操作所处进程,当多服务同时记录日志时,该值可用于协助程序员调试程序
    • 所属类/接口名,当前显示信息为SpringBoot重写后的信息,名称过长时,简化包名书写为首字母,甚至直接删除
    2.设置输出格式
    2.1 标签含义

    %d :日期,%m:消息,%n:换行,%p:日志级别,%5p:占5位字符
    %clr(xx):xxx显示为彩色,%t:线程名(thread),
    %-40.40c:左对齐类名(class)且最大长度为40且超过40就截取,{xx}:颜色

    2.2 样例
    • 样例1
    logging:
    #    设置日志输出格式  %d 日期 %m消息 %n换行  
      pattern:  
        console:"%d - %m%n"
    
    • 1
    • 2
    • 3
    • 4

    运行后如图![[Pasted image 20220727135545.png]]

    • 样例2
    console: "%d %clr(%5p) %n"
    
    • 1

    运行结果![[Pasted image 20220727140234.png]]

    • 样例3
    console: "%d %clr(%5p) --- [%16t] %clr(%-40.40c){cyan} : %m %n"
    
    • 1

    运行结果![[Pasted image 20220727141135.png]]

    3.日志文件

    3.1 目的

    便于维护时查看日志进行相应操作,控制台输出不安全

    3.2 设置日志文件
    • 设置,在application.yml中输入如下代码即可
    logging:
    	#   设置日志文件,在根目录会找到
    	file:  
    	  name: server.log
    
    • 1
    • 2
    • 3
    • 4
    • 文件位置如图所示 ![[Pasted image 20220727170044.png]]
    3.3 优化
    • 目的:让日志按日期大小分为多个日志文件,便于进行查阅,防止单个文件太大而打不开
    • 设置 ,类似于上文
    logging:
    	logback:  
    	  rollingpolicy:  
    	    max-file-size: 4KB  
    	    file-name-pattern: server.%d{yyyy-MM-dd}.%i.log
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 文件位置类似与上文

    三、使用开发篇

    注:

    • idea创建新模块hot_deploy,项目内容参考 基础篇中# 五.SSMP整合案例!
    • 不同之处1:controller层,如图![[Pasted image 20220727175839.png]]
    • 不同之处2:users.html,如图![[Pasted image 20220728192159.png]]

    3.1 热部署

    3.1.1 手动启动热部署

    3.1.1.1 热部署

    项目某一文件修改后无需进行重启服务器重新发布项目,只需要简单配置即可更新到修改后的内容

    3.1.1.2 操作
    • 在controller中查询用户号进行标注,如图![[Pasted image 20220727180251.png]]
    • 开启开发者工具:在pom的xml中加入如下代码
      
            <dependency>  
                <groupId>org.springframework.bootgroupId>  
                <artifactId>spring-boot-devtoolsartifactId>  
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 激活热部署:CTRL+F9
    • 更改代码后激活热部署即可看见改变
    3.1.1.3 关于热部署
    • 重启:自定义开发代码,包含类,页面,配置文件等,加载位置restart类加载器
    • 重载:jar包,加载位置base类加载器

    3.1.2 自动启动热部署

    • 右键项目打开settings设置
    • 找到Build,Exception,Deployment中的Complier
    • 选中Build project automaticaly应用确认即可,如图![[Pasted image 20220728170606.png]]
    • 2021版前IDEA配置方式:快捷键Alt+Ctrl+Shift+/后选择Registry中的complier.automake.allow.when .app.running即可,如图
      ![[Pasted image 20220728190155.png]]
    • 2021版IDEA后配置方式:找到项目设置中的Tools的Advanced Settings中的Complier,选择Allow auto-make to start even if when application is currently runnning,如图![[Pasted image 20220728190958.png]]
    • 激活方式:IDEA失去焦点5秒后

    3.1.3 热部署范围配置

    • 默认不触发重启的目录列表:
      • /META-INF/maven
      • /META-INF/resources
      • /resources
      • /static
      • /public
      • /templates
    • 自定义不参与热部署
    #  自定义不参与热部署  
      devtools:  
        restart:  
          exclude: config/applications.yml,static/**
    
    • 1
    • 2
    • 3
    • 4

    3.1.4 关闭热部署

    • 配置文件中关闭
      • 在application.yml文件中进行关闭,如下
      	#  自定义不参与热部署  
      devtools:  
      	 restart:  
       	 exclude: config/applications.yml,static/**  
          	# false为关闭  
        	 enabled: false
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 在项目启动类中用高一级语句来覆盖关闭热部署,如图在这里插入图片描述
  • 相关阅读:
    “300万”只是新起点,比亚迪将开启下一个 “黄金周期”
    理解计算着色器中glsl语言的内置变量
    【含面试题】MySQL表字段值转换为小写(或大写)的java代码实现
    网络数据帧中的(Jumbo Frame)巨帧、超长帧
    【atoi函数详解】
    【多线程】深入剖析线程池的应用
    C语言规范
    Unity调用C++ dll的那些坑
    【从零开始的Java开发】1-6-1 集合排序:对整型和字符串、Comparator接口、Comparable接口
    Python使用.NET开发的类库来提高你的程序执行效率
  • 原文地址:https://blog.csdn.net/qq_40903378/article/details/126674706