日志框架

市场上存在非常多的日志框架。
JUL(java.util.logging),JCL(Apache Commons Logging)、Log4j、Log4j2、Logback、SLF4j、jboss-loging等。
Spring Boot在框架内部使用JCL、spring-boot-starter-logging采用了slf4j+logback的形式,Spring Boot也能自动适配(jul、log4j2、logback)并简化配置。

  • 日志门面:日志的抽象层
  • 日志实现:日志的实现层

Spring Boot底层是Spring,使用的日志框架是JCL
此处,Spring Boot选用SLF4j+Logback


SLF4j的使用

1.如何在系统中使用SLF4J日志框架(抽象层)

在开发的时候,日志记录方法的调用,应该先调用抽象层里面的方法,然后由抽象方法调用日志的实现类;给项目里面导入SLF4j的jar和logback的jar包


每一个日志框架够用自己的配置的文件,使用SLF4j之后,配置文件还是做成日志实现框架本身的配置文件。

2.遗留问题

  • (SLF4j+logback):spring(JCL)、hibernate(jboss-logging)、mybatis…
    1.统一日志框架,即使使用的是别的的框架也要统一成SLF+logback日志框架
  1. 如何让项目中的所有日志框架统一(见上图)
    ① 将项目中其他框架的日志框架先排除
    ② 用中间包代替原来的日志框架
    ③ 导入SLF4j的其他实现

3.Spring Boot的日志关系

  1. SpringBoot底层也是使用的SLF4J+logback的实现日志记录
  2. SpringBoot在底层把其他jar包转换成了SLF4J
  3. 中间替换包

4.默认的日志配置

如果要引入其他框架,首先要移除这些框架说依赖的日志jar
Spring Boot能自动适配所有的日志,而且底层使用的是SLF4J+logback的方式记录,如果要引入其他框架首先要把引入的框架的日志框架移除,换成中间件日志的使用
而SpringBoot已经默认配置好了日志框架

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootLogApplicationTests {/*** 日志的级别* 从低到高* trace->debug->info->warn->error* 可以调整输出日志级别:日志级别只会输出这个级别以后的级别*///记录器Logger logger=LoggerFactory.getLogger(getClass());@Testpublic void contextLoads() {logger.trace("这是trace日志....");logger.debug("这是debug日志...");//Spring Boot默认的日志级别是info--如果没有指定级别,SpringBoot会使用默认的级别infologger.info("这是info日志");logger.warn("这是warn日志");logger.error("这是error日志");}}

测试:

修改日志级别

在properties配置文件中:

logging.level.com.zhumengkj=trace

再测试:

日志默认配置

日志的配置主要有三个

  • logging.file日志文件名
  • logging.path日志目录
  • Example日志文件

注意:实际开发中不会使用loggingfile,会常用logging.path

logging.file

在properties配置文件中:

#指定日志界别为trace 不指定则默认为info
logging.level.com.zhumengkj=trace#当前项目下生成springboot.log日志文件
logging.file=springboot.log

运行测试:

也可以指定路径

#也可以指定路径
logging.file=C:/Users/zYu/Desktop/springboot.log

logging.path
#也可以指定路径
#logging.file=C:/Users/zYu/Desktop/springboot.log#在当前磁盘的根路径下创建spring文件夹下创建log文件夹,使用默认spring.log文件接收日志
logging.path=/spring/log
指定输出格式

日志输出的格式:

在properties配置文件中添加:

#指定在控制台的输出格式
logging.pattern.console=>>>%d{yyyy-MM-dd HH:mm:ss.SSS}>>>>>[%thread]>>>>>%-5level>>>>>%logger{50}>>>>>%msg%n
#指定在文件中输出的格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS}=====[%thread]=====%-5level=====%logger{50}=====%msg%n

运行测试
查看控制台:

查看日志文件:

5.指定日志配置文件

指定配置
在类路径下新建相关日志自己的配置文件,Spring Boot在检索到此文件时就不会再使用默认的配置文件了。

logback.xml:直接被框架识别
logback-spring.xml:日志框架就不直接加载日志的配置项,由Spring Boot解析日志配置,可以使用Spring Boot的高级profile功能。

05.日志框架与Spring Boot日志全篇相关推荐

  1. springboot日志写入mysql_44. Spring Boot日志记录SLF4J【从零开始学Spring Boot】

    学院中有Spring Boot相关的课程!点击「阅读原文」进行查看! SpringSecurity5.0视频:http://t.cn/A6ZadMBe Sharding-JDBC分库分表实战: 在开发 ...

  2. spring boot 日志乱码_3. Spring Boot日志

    3.1 日志框架分类和选择 市面上的日志框架 JCL.SLF4J,Jboss-logging.logback.log4j.log4j2.JUL .... 左边选一个门面(抽象层),右边来选一个实现 ? ...

  3. Spring Boot 日志(八)

    一.日志框架的选择 市面上常见的日志框架有很多,它们可以被分为两类:日志门面(日志抽象层)和日志实现,如下表: 通常情况下,日志由一个日志门面与一个日志实现组合搭建而成,Spring Boot 选用 ...

  4. Spring Boot日志集成

    Spring Boot日志框架 Spring Boot支持Java Util Logging,Log4j2,Lockback作为日志框架,如果你使用starters启动器,Spring Boot将使用 ...

  5. 54. spring boot日志升级篇—logback【从零开始学Spring Boot】

    在<44. Spring Boot日志记录SLF4J>章节中有关相关的介绍,这里我们在深入的了解下logback框架. 为什么要使用logback ? --在开发中不建议使用System. ...

  6. Spring Boot 日志管理

    在代码有问题的时候,很多人应该都是通过 debug 的方式去排查,往往忽略了日志的重要性. 好的日志管理可以快速定位问题出现的位置,也可以提高代码的阅读性.这篇博文主要介绍一下 Spring Boot ...

  7. (转)Spring Boot 日志配置(超详细)

    转自:https://blog.csdn.net/inke88/article/details/75007649 ============================== Spring Boot- ...

  8. logback日志pattern_003、Spring Boot使用slf4j进行日志记录

    在开发中,我们经常使用 System.out.println() 来打印一些信息,但是这样不好,因为大量的使用 System.out 会增加资源的消耗.我们实际项目中使用的是 slf4j 的 logb ...

  9. Spring Boot 日志配置 ——logback

    一.logback默认的日志配置 Spring Boot 默认使用的日志框架是logback,如果我们没有自定义配置的话,logback将会使用他为默认的日志配置文件: classpath:logba ...

  10. Spring Boot 日志配置(超详细)

    Spring Boot-日志配置(超详细) 更新日志: 20170810 更新通过 application.yml传递参数到 logback 中. 简书不支持目录,截图一张. 默认日志 Logback ...

最新文章

  1. 关于谷歌浏览器 点击元素便签出现外边框的情况解决办法
  2. CentOS 6 nginx(Tengine2.1.2)源码编译一键部署脚本
  3. 电力电子技术 matlab仿真指导,在_电力电子技术_课程教学中展开Matlab仿真训练_唐贤伦...
  4. [转载]每日构造与冒烟测试
  5. Uniswap 24小时交易量12.5亿美元,占以太坊上Dex总量的50.05%
  6. azure db 设置时区_关于Azure Cosmos DB(以前称为DocumentDB)的8件事
  7. Python入门学习资料分享
  8. SparrowRecSys电影推荐系统项目(一)
  9. Java 代码调用 Maven 命令
  10. arduinouno摄像头OV7670_Arduino极限操作 摄像头OV7670拍照
  11. Java操作xls文件,数据去重
  12. 【报告分享】 知乎:2020「知+」产品手册(附下载)
  13. 以下内容仅对你可见个性签名_以下内容仅对你可见个性签名_微信个性签名以下内容仅对你可见模板...
  14. 浙工大 drcom客户端 嵌入 Linux路由器
  15. excel批量文件改名批量加后缀
  16. BUUCTF:[GXYCTF2019]佛系青年
  17. 获取电信光猫TEWA-600超级管理密码,修改电信光猫为桥接模式
  18. 软件流程和管理(七):个人、激励和团队
  19. ubuntu 100M 到 10M
  20. 计算机算法设计与分析第五章思维导图知识点总结 ( 初稿 )

热门文章

  1. Best生物信息学家应该掌握的数学_之我的看法
  2. 远程连接redis,并设置字符集
  3. mybatis_07动态SQL_foreach循环
  4. (6)Python集合
  5. 3. 什么是icmp?icmp与ip的关系_0.3亿人口的美国会比3亿人口的美国富裕吗?
  6. 理解J.U.C中的ReentrantLock
  7. HTML iframe标签下 子页面调用父页面js 容易产生的跨域调用问题 Uncaught DOMException
  8. 浅谈http协议六种请求方法,get、head、put、delete、post、options区别
  9. 【Shiro第四篇】SpringBoot + Shiro实现记住登录状态
  10. idea运行项目提示找不到或无法加载主类