咱们说了springboot做日志管理的依赖原理,用logback的方式进行实现,那怎么用呢

大家测试一下,我们打开之前创建的工程,现在不做任何配置的情况下,我就直接来运行这段代码,我们看到控制台其实已经有日志输出了,所以我们说,springboot默认已经帮我们配置好日志了,我们直接使用就行了,那怎么用呢,我就用测试类,如果我们想要记录一些东西,别用system.out了,system.out太简陋了,我们来用日志,日志我们首先是面对slf4j编程的,有一个LoggerFactory,它是slf4j旗下的,有一个方法getLogger,Logger就是记录器,他要传一个class,那我就直接getClass,把这个类的class传过去,Logger logger = LoggerFactory.getLogger(getClass());会给我们返回一个Logger,称之为记录器,我们就拿这个记录器记录日志,怎么记录呢,一个叫logger.trace,trace叫做跟踪轨迹的意思,如果框架在运行过程中,跟踪一些信息,比用system.out了,然后还有一个logger.debug,debug这是调试,输出一些调试信息,还有一个常用的是logger.info,这就是我们自己定义的一些信息,还有一个logger.warn,这相当于是警告,比如返回值如果不是预期的,日志记录一下,还有logger.error,这是错误,如果你try catch要捕获异常,而它也出这个异常了,咱们的这个日志记录一下,这是我们常用的这几个东西,而我们这些东西,叫日志的级别,日志级别由低到高,就是我们这几个trace<debug<info<warn<error我们要日志级别有什么用,这个日志框架的一大好处,可以调整日志输出的级别,比如我们的这个项目上线了,debug信息和info信息我不想要,我只想要警告和错误,我们只想让她打印警告和错误,如果是以前我们要把它注掉,我们可以调整日志级别,他只会打印这个级别及以后的内容,日志就只会在这个级别及以后的高级别生效,比如我们来举一个例子,我们记录了一些信息,我们发现只输出了info,warn,error,相当于trace和debug没有输出,springboot默认给我们默认的是info级别的,所以只会输出info级别及以后的内容,我们springboot,也就是我这个类在输出的时候呢,我只能输出这几个级别,那我能不能调整啊,也可以调整,怎么调整呢,所有的日志调整,我们都在配置文件里面,我们可以写一个logging
package com.learn.springboot;import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;import com.learn.bean.Person;/*** SpringBoot单元测试** 可以在测试期间很方便的类似编码一样进行自动注入等容器的功能*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot02ConfigurationTests {@AutowiredPerson person;@AutowiredApplicationContext ioc;@Testpublic void testHelloService() {boolean b = ioc.containsBean("helloService02");System.out.println(b);}Logger logger = LoggerFactory.getLogger(getClass());@Testpublic void contextLoads() {
//      System.out.println(person);// 日志的级别// 由低到高 trace<debug<info<warn<error// 可以调整输出的日志级别;日志就只会在这个级别以后的高级别生效logger.trace("这是trace日志......");logger.debug("这是debug日志......");// SpringBoot默认给我们使用的是info级别的logger.info("这是info日志........");logger.warn("这是warn日志........");logger.error("这是error日志......");}
}
有一个level叫级别,level它是一个map,他写的就是你每一个包,或者你每一个类,你日志输出用什么级别,比如我们只调com.learn,把com.learn,learn类里面的级别我都调成trace级别logging.level.com.learn=trace我调成这个级别,trace以后就都能够输出了,是不是这样呢,其实没调还是给默认的info,我们这些就输出全了
#debug=true
#server.port=8081#server.context-path=/boot02spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=truelogging.level.com.learn=trace
没有制定级别的,就是用SpringBoot默认规定的级别,如果是知道这个日志框架,这就叫root级别的,把root规定成了info,然后设置了的用我们的,没设置的,用root,然后这是我们这几个级别,以后我们开发就用它来做日志记录,通过都可以在application里面看到,我们还有一个logging.path,和logging.file,logging.path和logging.file如果都不指定的情况下,我们日志只会在控制台输出,如果我们用logging.file指定了日志的文件名,把日志输出到指定的文件

我们先不写logging.path看一下,我来指定一个文件名,我们就叫springboot.loglogging.file=springboot.log我来运行一下,我们来看这个日志,日志在这有记录,没问题,当前项目下就有springboot.log,当前项目下生成springboot.log日志,我不想在当前项目下,那我能不能在哪个盘指定呢,蔽日我要他在d盘,logging.file=D:/springboot.log现在我们启动起来,在d盘看一下,这儿也有,也指定上路径,不指定路径在当前项目下生成,我们可以指定完整的路径,就在我们指定的路径下,生成我们这个文件,这是logging.file,还有一个呢,叫logging.path,这path一听就是路径,这指定路径还有什么用呢,logging.file和logging.path其实是冲突设置,你指定logging.file不指定logging.path,file起作用了,如果你指定了logging.file和logging.path,还是logging.file起作用,我们一般是来指定logging.path,path是我们来指定目录,我要指定一个你要生成的日志目录,日志文件用springboot默认的,比如我们指定一个目录叫logging.path=/spring/log这是什么意思啊,/在linux下是绝对路径,在当前磁盘的根路径,创建spring文件夹,和里面的log文件夹,然后使用日志文件叫什么,使用spring.log作为默认文件,这是spring规定的,所以我来试一下,然后日志帮我们记录下来,所以我们在这可以指定路径,当然也可以指定更多的东西,如有一个logging.parttern.console,这console就是我们在控制台,在控制台输出的日志格式,那么还有一个你能指定,logging.pattern.file,指定文件中日志输出的格式,我们默认这个格式是什么样的呢,这一块我们叫做时间,日志级别logging.parttern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n控制台%d就是日期,现在还是带上时分秒的,我现在不要时分秒了,然后加上线程号,加上我们这个级别,-5就是靠左对齐,logger就是全类名50个字符,然后带上消息,%n换行,这是在控制台输出的,如果是在文件里面呢logging.pattern.file=%d{yyyy-MM-dd} ==== [%thread] %-5level ==== %logger{50} ==== %msg%n多给他中间加上==号,每一个每一个之间加上等等号,%thread就是我们的线程,线程用中括号括起来,我们看一下是不是按照我们指定的格式走了呢,然后控制台输出的时候就没有时分秒了,然后我们来看我们的文件,我们现在就回按照我们规定的格式来了,这也是我们也能规定格式,那么格式代表是什么意思
#debug=true
#server.port=8081#server.context-path=/boot02spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=truelogging.level.com.learn=trace
#logging.file=D:/springboot.log
logging.file=springboot.log
#logging.path=/spring/log
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd} ==== [%thread] %-5level ==== %logger{50} ==== %msg%n

SpringBoot_日志-SpringBoot默认配相关推荐

  1. SpringBoot_日志-SpringBoot日志关系

    我们看到其他日志统一到slf4j的原理,我们看一下Springboot里的日志是怎么做的,首先这是springboot帮我们项目创建的配置文件,pom文件引入了web依赖,还引入了测试依赖,而这些依赖 ...

  2. SpringBoot默认日志配置输出级别

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/csdn18740599042 /article/details/109031005 Springboot默认配置 我们在测试类 ...

  3. SpringBoot默认日志logback配置解析

    SpringBoot默认日志logback配置解析 前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的,你呢 如何引入日志? 日志输出格式 ...

  4. springboot 默认日志配置以及更换其他日志配置

    springboot 默认日志配置 最简单的打印Sql日志 方法一 此方法无需改动直接复制即可使用 #打印SQL mybatis.configuration.log-impl=org.apache.i ...

  5. springboot的日志的默认格式,logback默认日志格式

    今天发现springboot的日志格式挺整齐的,又仔细研究了一下 springboot默认的日志格式,挺好看 %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:-} [%15 ...

  6. SpringBoot 默认数据库连接池 HikariCP

    目录 引言 1.问题描述 2.SpringBoot默认的数据库连接池 3.HikariCP是什么 4.测试依赖 5.配置文件 5.1.数据库连接参数 5.2.连接池数据基本参数 5.3.连接检查参数 ...

  7. 更好用的HTTP客户端工具,跟SpringBoot绝配

    ​ 我们平时开发项目时,就算是单体应用,也免不了要调用一下其他服务提供的接口.此时就会用到HTTP客户端工具,之前一直使用的是Hutool中的HttpUtil,虽然容易上手,但用起来颇为麻烦!最近发现 ...

  8. springboot 默认异常处理

    SpringBoot默认有自定义异常处理的体系,在做SpringBoot项目的时候,如果是抛出了运行时异常,springBoot并会对异常进行处理,返回如下异常信息: {"timestamp ...

  9. Springboot默认加载application.yml原理

    Springboot默认加载application.yml原理以及扩展 SpringApplication.run(-)默认会加载classpath下的application.yml或applicat ...

最新文章

  1. 【Android 逆向】代码调试器开发 ( ptrace 函数 | 读取进程内存数据 )
  2. 如何接受上级指令_向上级领导汇报工作是经常的,想得赏识,了解如何接受上级的命令...
  3. LeetCode 15. 三数之和 思考分析(双指针解)
  4. spark更改分区_用于小文件的spark重新分区数据
  5. CSS的预编译——less语言基本语法教程(入门)
  6. 今天看到一篇小册子上的话
  7. 【玩转Atlas200DK系列】为Atlas200DK配置wifi外挂模块
  8. 一个入门级的Java Applet
  9. J - 简单枚举类型——植物与颜色
  10. 无线RTU 数据采集 远程测控
  11. Nature杂志总编辑:如何培养一个有价值的研究者
  12. CS229 --Lecture1 Introduction
  13. 荣耀play4tpro有没有鸿蒙,荣耀Play4Tpro有没有耳机孔?
  14. coursera课程下载方法
  15. 如何做一份适用的定向地图
  16. 微信小程序运营系列(八)——怎么玩转中高频行业运营?
  17. 日本語トレーニング45
  18. 携程移动端静态页面仿写
  19. 楚留香手游系统互通的服务器,楚留香手游帮派系统互通介绍
  20. indesign中调出字符样式快捷键_InDesign快捷键大全 InDesign常用快捷键分享

热门文章

  1. 获取 input 单选框和多选框的值
  2. Windows8 64位运行Silverlight程序不能访问WCF的解决方案
  3. Blend4开发:会飞的小鸟
  4. zigbee cc2530 灌电流 拉电流 上拉电阻
  5. C++基础 (1) 常见的易错问题
  6. List转DataTable(反射)
  7. Spring.NET学习笔记——前言
  8. JS判断当前的浏览器类型
  9. react native 生成APK
  10. php method_exists 检测类中是否包括函数