SpringBoot起飞系列-日志使用(四)
一、SpringBoot中的日志组件
日志是一个系统中不可缺少的组件。在项目中,我们常用的日志组件有JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....,这里边有抽象层定义,有实现层,用一张图我们来看一下:

说明:
1.其中JCL是我们spring中的常用日志框架commons-logging,只不过在2014年就不更新了,jboss-logging是特定领域的框架,不适合我们使用。
2.springboot中采用的日志框架就是SLF4j(抽象层)和实现层Logback,log4j2和Logback都是log4j的升级版,只不过Log4j2用的还不是太广泛,现在大多数使用Logback。
二、SLF4j的使用
2.1 基本使用方法
现在我们使用的默认配置,springboot已经帮我们设置好了日志框架,我们直接使用就可以了。
首先我们添加引用实例,然后写上代码:
public class DemoApplicationTests {
private Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void loggerTest() {
logger.trace("trace log...");
logger.debug("debug log...");
logger.info("info log...");
logger.warn("warn log...");
logger.error("error log...");
}
}
输出如下:

可以看出这里我们只输入了info,warn和error的日志,其他两个trace和debug的日志没有输出来,这是什么原因呢?
其实这里的日志是分级别的,当你设置了一个日志级别之后,低于这个级别的日志信息是不会打印出来的,当我们的环境不一样的时候可能要输出的日志级别也不一样,比如开发环境可能需要debug的日志,生产环境可能需要warn和error的日志等等。
日志的级别由低到高为 trace<debug<info<warn<error,springboot中默认的级别是info级别的,所以小于info级别的trace和debug就没有输出。
2.2 日志级别配置
我们可以在配置文件中指定日志的级别,日志级别的指定是根据包名来的,也就是你指定哪个包下的级别是多少,我们现在指定我们的这个包下的日志级别为trace,在application.properties中添加配置:
logging.level.com.example = trace
重新运行测试,输出如下,说明成功设置了我们的级别:

2.2 日志存储路径
当我们写日志的时候,我们想存储到文件中,那么我们就可以设置日志的路径。
#指定目录
#logging.path=D:/
#当前运行jar包的目录
#logging.path=spring/log
#当前运行jar包的磁盘根目录
logging.path=/spring/log
三种指定路径的形式,产生的日志分别在相应的目录,一般使用logging.path=spring/log,保证在当前项目的目录产生日志,可以一个磁盘上会有多个项目。

附上一张说明,上边如果配置的logging.file或者logging.path就会写到磁盘上,如果没有就输出到控制台。
2.3 日志的输出格式
有时候我们想把日志设置一些格式,看起来方便一点,那么我们可以设置日志的格式,中间可以添加一些符号和换行之类的东西,是日志看起来更加的清晰。
# 在控制台输出的日志的格式
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
%d:日期,{yyyy-MM-dd}表示日期的格式。
%thread:当前线程。
%level:日志级别,-5表示总共占5个字符,不足的用空格补齐。
%logger:日志记录器的类型,也就是getLogger()的参数类型。
%msg:日志内容。
%n:换行。
带%的都是一些特殊占位符,其他是就是我们添加的格式了,具体的参数可以查阅官方文档就行了。
三、总结
最简单日志使用基本就这些了,如果还需要高级的使用方法,就可以去参考官方文档了,今天我们先介绍这么多。
SpringBoot起飞系列-日志使用(四)的更多相关文章
- SpringBoot起飞系列-Web开发(四)
一.前言 从今天你开始我们就开始进行我们的web开发,之前的一篇用SpringBoot起飞系列-使用idea搭建环境(二)已经说明了我们如何进行开发,当然这是搭建起步,接下来我们就开始进行详细的开发, ...
- SpringBoot起飞系列-国际化(六)
一.前言 国际化这个功能可能我们不常用,但是在有需要的地方还是必须要上的,今天我们就来看一下怎么在我们的web开发中配置国际化,让我们的网站可以根据语言来展示不同的形式.本文接续上一篇SpringBo ...
- SpringBoot起飞系列-入门(一)
一.SpringBoot简介 1.1 什么是SpringBoot 说到spring系列,可能大家都很熟悉,spring.springmvc,美之名曰:spring全家桶,那么springboot其实也 ...
- SpringBoot起飞系列-自定义starter(十)
一.前言 到现在,我们可以看出来,如果我们想用一些功能,基本上都是通过添加spring-boot-starter的方式来使用的,因为各种各样的功能都被封装成了starter,然后把相关服务注入到容器中 ...
- SpringBoot起飞系列-数据访问(九)
一.前言 前边我们已经学些了开发的基本流程,最重要的一步来了,怎么样和数据库交互才是最重要的,毕竟没有数据那就相当于什么也没做,本文我们来学习使用springboot整合jdbc.mybatis.jp ...
- SpringBoot起飞系列-拦截器和统一错误处理(七)
一.前言 在前边部分我们已经学会了基本的web开发流程,在web开发中,我们通常会对请求做统一处理,比如未登录的用户要拦截掉相关请求,报错页面统一显示等等,这些都需要配置,可以大大简化我们的代码,实现 ...
- SpringBoot起飞系列-配置文件(三)
一.SpringBoot中的配置文件 说起到配置文件,大家并不陌生,早在springboot之前,我们用ssh,ssm框架开发的时候整天都要接触配置文件,那时候的配置文件基本上都是.propertie ...
- SpringBoot起飞系列-配置嵌入式Servlet容器(八)
一.前言 springboot中默认使用的是tomcat容器,也叫做嵌入式的servlet容器.因为它和我们平常使用的tomcat容器不一样,这个tomcat直接嵌入到的springboot,平常我们 ...
- SpringBoot起飞系列-使用idea搭建环境(二)
一.环境配置 安装idea的教程就不说了,相信大家肯定已经安装好了,另外maven环境肯定也安装好了,那么我们就开始使用idea开发工具来创建一个springboot的web项目,这里奉上一个idea ...
随机推荐
- python 35 多线程
目录 多线程 1. 线程 2. 线程vs进程 3. 开启线程的两种方法. 4. 线程的特性 5. 线程的相关方法 6. join 阻塞 7. 守护线程 daemon 8. 互斥锁 多线程 1. 线程 ...
- 关于line-height 行高的一些理解和技巧
大家都知道,如何设置文字垂直居中,也就是:设置line-height 和 外围盒子的高度height一致: 其实这里有个地方,是多余的,也就是height,设不设置都居中: 那么,行高是生产高度的? ...
- 【CocosBuilder】学习笔记目录
从2019年8月底开始学习CocosBuilder. CocosBuilder 学习笔记(1) CCBReader 解析.ccbi文件流程 CocosBuilder 学习笔记(2) .ccbi 文 ...
- Leetcode之回溯法专题-216. 组合总和 III(Combination Sum III)
Leetcode之回溯法专题-216. 组合总和 III(Combination Sum III) 同类题目: Leetcode之回溯法专题-39. 组合总数(Combination Sum) Lee ...
- 不修改的主席(HJT)树-HDU2665,POJ-2104;
参考:优秀的B站视频: 和 https://blog.csdn.net/creatorx/article/details/75446472 感觉主席树这个思路是真的优秀,每次在前一次的线段树的基础 ...
- 牛客网暑期ACM多校训练营(第三场) E Sort String 哈希处理字符串(模板)
链接:https://www.nowcoder.com/acm/contest/141/E来源:牛客网 Eddy likes to play with string which is a sequen ...
- CodeForces 980 C Posterized
Posterized 题意:将[0,255] 分成 若干段, 每一段的长度最多为k, 每一个数只能被放进一个段里, 然后每一段的数组都可以被这一段最小的数字表示, 求最小的字典序. 题解:每次一个访问 ...
- .net core 部署到windows上的方法与 系统中相关问题的解决
前言 Net core 项目部门在Windows有很多种方式,大致有以下几种, dotnet 命令, iis(windowshosts), 一些开源的应用容器(docker ) 基于一些exe 程序, ...
- redis持久化的两种方式RDB和AOF
原文链接:http://www.cnblogs.com/tdws/p/5754706.html Redis的持久化过程中并不需要我们开发人员过多的参与,我们要做的是什么呢?除了深入了解RDB和AOF的 ...
- 【第十五篇】easyui datagrid的列编辑,同时插入两张表的数据进去
看图说话. 需求:插入两张表,上面的表单是第一张表的内容,下面的两个表格是第二张详情表的内容,跟第一张表的id关联 第二张表有一个列是需要用户手动填写添加的. 国际惯例,上代码 <div id= ...