更多Spring文章,欢迎点击 一灰灰Blog-Spring专题html
对于一个后端来讲,日志是不可缺乏的,这个东西,形象点就像剑客手中的剑,没有剑你就刷不了帅,砍不了人。因此就有必要好好的说道说道,这个日志文件的管理了。本篇博文将关注如下几点内容java
<!-- more -->git
建立一个SpringBoot项目,根据官方文档的说明,默认选择的是Logback来记录日志;logback也是相对来讲用的比较多的框架了,下文全都默认以logback做为日志输出框架github
By default, if you use the “Starters”, Logback is used for logging. Appropriate Logback routing is also included to ensure that dependent libraries that use Java Util Logging, Commons Logging, Log4J, or SLF4J all work correctly.spring
完整的pom依赖以下,即不须要引入什么特别的依赖,基本上就是SpringBoot项目最根本的项目结构后端
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </pluginManagement> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
写一个简单的日志测试框架
@Slf4j @SpringBootApplication public class Application { public Application() { log.debug("---> debug start! <------"); log.info("---> info start! <------"); log.warn("---> warn start! <------"); log.error("---> error start! <------"); System.out.println("===> System.out.println <====="); } public static void main(String[] args) { SpringApplication.run(Application.class); } }
看下控制台输出结果,info,warn,error能够正常输出且输出格式包含一些附加信息,System.out也能够正常输出,debug的日志没有maven
2018-09-26 14:16:01.136 INFO 38924 --- [ main] com.git.hui.boot.log.Application : ---> info start! <------ 2018-09-26 14:16:01.137 WARN 38924 --- [ main] com.git.hui.boot.log.Application : ---> warn start! <------ 2018-09-26 14:16:01.137 ERROR 38924 --- [ main] com.git.hui.boot.log.Application : ---> error start! <------ ===> System.out.println <=====
接下来在进入logback的配置文件以前,先看一下默认的配置有哪些,以及如何使用spring-boot
默认是不输出debug日志的,若是须要,则须要在配置文件中添加 debug=true
属性;一样能够设置trace=true
,就能够看应用输出的trace日志学习
然而,即使开启了debug,上面测试中的debug日志也依然没有,那须要输出上面的debug日志,应该怎么设置?
上面的配置虽然在控制台打印了一些debug日志,但并无打印咱们业务代码中的debug日志,须要开启这个,须要以下设置
logging.level.root=DEBUG logging.level.org.springframework=INFO logging.level.org.hibernate=ERROR
上面这个配置就是指定包下日志输出的等级,root表示默认的级别
如上配置后,再次执行上面的代码,输出结果以下
默认的输出格式如前面的截图,若是但愿更改下输出的日志格式,能够经过修改属性来完成,一个也实例以下
logging.pattern.console=%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
再次执行,输出样式以下
至于这个属性值的构成原则,在后面说到logback.xml
配置文件语法时,一并再说
说明
还有个参数能够设置文本的颜色,我的感受实用性不是特别大,只贴下配置以下
## 检测终端是否支持ANSI,是的话就采用彩色输出 spring.output.ansi.enabled=detect ## %clr(){} 格式,使文本以蓝色输出 logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS} %thread] %-5level %logger{36} - %msg%n){blue}
上面全部的日志都是输出到控制台,在实际的生成环境中,通常要求日志写到文件,能够方便随时进行查看,经过设置相关参数也能够很简单实现
## 输出的日志文件 logging.file=logs/info.log ## 当文件超过1G时,归档压缩 logging.file.max-size=1GB ## 日志文件最多保存3天 logging.file.max-history=3
一样执行前面的代码两次,输出以下, 两次的输出结果均可以在日志文件中查到,相比较于控制台而言,用于查历史日志就更加的方便了
上图中,控制台的输出格式和日志文件的输出格式不同,由于前面修改了控制台的输出样式;若是但愿修改文件中的日志格式,也能够经过修改配置logging.pattern.file
来实现
上面的配置虽然ok,可是对于Logback而言,仍是有不少高级特性不太好配置,所以SpringBoot仍是支持经过加载logback-spring.xml
配置文件来定义日志相关的参数,只须要在资源文件目录下添加 logback-spring.xml
或者 logging.config
便可
一灰灰的我的博客,记录全部学习和工做中的博文,欢迎你们前去逛逛
尽信书则不如,已上内容,纯属一家之言,因我的能力有限,不免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
一灰灰blog
知识星球