博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot的日志框架slf4j (使用logback输出日志以及使用)
阅读量:7005 次
发布时间:2019-06-27

本文共 7187 字,大约阅读时间需要 23 分钟。

1、为什么使用logback?

       ——在开发中不建议使用System.out因为大量的使用会增加资源的消耗。因为使用System.out是在当前线程执行的,写入文件也是写入完毕之后才继续执行下面的程序。而使用Log工具不但可以控制日志是否输出,怎么输出,它的处理机制也是通知写日志,继续执行后面的代码不必等日志写完。

       ——个人推荐使用SLF4J(Simple Logging Façade For Java)的logback来输出日志,其比log4j效率高。

    ——Spring Boot 提供了一套日志系统,logback是最优先的选择。

2、logback,slf4j,log4j之间的关系

  Slf4j是The Simple Logging Facade for Java的简称,是一个简单日志门面抽象框架,它本身只提供了日志Facade API和一个简单的日志类实现,一般常配合Log4j,LogBack,java.util.logging使用。Slf4j作为应用层的Log接入时,程序可以根据实际应用场景动态调整底层的日志实现框架(Log4j/LogBack/JdkLog...)

LogBack和Log4j都是开源日记工具库,LogBack是Log4j的改良版本,比Log4j拥有更多的特性,同时也带来很大性能提升。

3、Logback的结构

LogBack被分为3个组件,logback-core, logback-classic 和 logback-access.

其中logback-core提供了LogBack的核心功能,是另外两个组件的基础。

logback-classic则实现了Slf4j的API,所以当想配合Slf4j使用时,需要将logback-classic加入classpath。

logback-access是为了集成Servlet环境而准备的,可提供HTTP-access的日志接口;

spring-boot默认支持logback,所以无需引用任何以来只需要,配置application.properties即可,如果要功能丰富些,则配置下logback.xml

4、

 

5、具体的配置

在application.yml中的配置:

 

在logback-spring.xml中的配置;

多环境的配置:

 

多环境日志输出根据不同环境(prod:生产环境,test:测试环境,dev:开发环境)来定义不同的日志输出,在 logback-spring.xml 中使用 springProfile 节点来定义,方法如下: 【注意文件名称不是logback.xml,想使用spring扩展profile支持,要以logback-spring.xml命名】

 

  6、日志的级别

默认输出该等级之上的日志,顺序是由高到底,ERROR--WARN--INFO--DEBUG--TRACE

@RunWith就是一个运行器

@RunWith(JUnit4.class)就是指用JUnit4来运行

@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境

@RunWith(Suite.class)的话就是一套测试集合,

@RunWith 翻译成中文就是 测试运行器,JUnit所有的测试方法都是由测试运行器负责执行。JUnit为单元测试提供了一个默认的测试运行器BlockJUnit4ClassRunner,但是没有限制必须使用默认的运行器。我们常用的有参数运行器@RunWith(Suit.Class)@SuitClasses(MyTest.Class,MyTest2.Class)这个是打包测试功能,多个class 可以一起执行测试,不需要一个一个执行,这样节省时间,提高效率@RunWith(Parameteried.Class)模拟不同的参数方法进行测试,如果为每个类型参数创建一个方法,那是很耗时,傻瓜式的。@RunWith(SpringJUnit4ClassRunner.class)这个是用springmvc的容器@RunWith(Parameterized.class)

  

 

 

 

 

7、在java类中如何使用呢,springboot是约定大于配置,所以我们使用注解的方式来配置

在日志中输出变量的方式:

8、logback-spring.xml的具体的配置我们可以参考如下博客

https://blog.csdn.net/qianyiyiding/article/details/76565810

http://412887952-qq-com.iteye.com/blog/2307244

1-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n
GBK
RestAPI
${LOG_PATH}/${APPDIR}/log_error.log
${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log
2MB
true
===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n
utf-8
error
ACCEPT
DENY
${LOG_PATH}/${APPDIR}/log_warn.log
${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log
2MB
true
===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n
utf-8
warn
ACCEPT
DENY
${LOG_PATH}/${APPDIR}/log_info.log
${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log
2MB
true
===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n
utf-8
info
ACCEPT
DENY
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n

  

%d %p (%file:%line\)- %m%n
UTF-8
log/demo.log
log/demo.%d.%i.log
30
1KB
%d %p (%file:%line\)- %m%n
UTF-8

  关于配置log日志的输出路径的问题:配置一个property,然后filenamePattern添加上去就行了。

 

你可能感兴趣的文章