没有合适的资源?快使用搜索试试~ 我知道了~
首页Spring Boot 进阶笔记(详细全面) 中文PDF完整版.pdf
《Spring Boot 进阶笔记(详细全面) 中文PDF完整版.pdf》是一份高级学习资料,适合已掌握基础知识的开发者深入学习Spring Boot框架的高级应用。该资料内容包括Spring Boot的自动配置、Web开发、数据访问、缓存、消息队列、安全和测试等方面。通过学习该资料,读者可以更深入地了解Spring Boot框架的高级应用,掌握实际应用技巧。该资料适用于已经掌握Spring Boot基础知识的开发者,也适用于需要使用Spring Boot框架进行实际开发的开发者。Spring Boot是Pivotal团队提供的全新框架,设计目的是简化Spring应用的初始搭建和开发过程,让开发者尽可能快地运行Spring应用程序,并减少配置文件的数量。它是一些库的集合,可以被任意项目的构建系统使用。
资源详情
资源评论
资源推荐
使用也是很简单,只需要在类上标注一个注解 @Slf4j 即可,如下:
如何定制日志级别?
Spring Boot中默认的日志级别是INFO,但是可以自己定制日志级别,如下:
上面是将所有的日志的级别都改成了 DEBUG ,Spring Boot还支持 package 级别的日志级别调整,格式
为: logging.level.xxx=xxx ,如下:
那么完整的配置如下:
日志如何输出到文件中?
Spring Boot中日志默认是输出到控制台的,但是在生产环境中显示不可行的,因此需要配置日志输出
到日志文件中。
其中有两个重要配置如下:
1. logging.file.path :指定日志文件的路径
2. logging.file.name :日志的文件名,默认为 spring.log
注意:官方文档说这两个属性不能同时配置,否则不生效,因此只需要配置一个即可。
指定输出的文件为当前项目路径的 logs 文件下,默认生成的日志文件为 spring.log ,如下:
日志文件中还有一些其他的属性,比如日志文件的最大size,保留几天的日志等等,下面会介绍到。
如何定制日志格式?
默认的日志格式在第一张图已经看到了,有时我们需要定制自己需要的日志输出格式,这样在排查日志
的时候能够一目了然。
定制日志格式有两个配置,分别是控制台的输出格式和文件中的日志输出格式,如下:
1. logging.pattern.console :控制台的输出格式
2. logging.pattern.file :日志文件的输出格式
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
@Slf4j
class DemoApplicationTests {
@Test
public void test(){
log.debug("输出DEBUG日志.......");
}
}
logging.level.root=DEBUG
logging.level.com.example.demo=INFO
logging.level.root=DEBUG
logging.level.com.example.demo=INFO
logging.file.path=./logs
例如配置如下:
上面的配置编码的含义如下:
如何自定义日志配置?
Spring Boot官方文档指出,根据不同的日志系统,可以按照如下的日志配置文件名就能够被正确加
载,如下:
1. Logback :logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
2. Log4j :log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
3. Log4j2 :log4j2-spring.xml, log4j2.xml
4. JDK (Java Util Logging) :logging.properties
Spring Boot官方推荐优先使用带有-spring的文件名作为你的日志配置。因此只需要在 src/resources
文件夹下创建 logback-spring.xml 即可,配置文件内容如下:
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n
%d{HH:mm:ss.SSS}——日志输出时间
%thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用
%-5level——日志级别,并且使用5个字符靠左对齐
%logger- ——日志输出者的名字
%msg——日志消息
%n——平台的换行符
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 定义日志存放目录 -->
<property name="logPath" value="logs"/>
<!-- 日志输出的格式-->
<property name="PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t-%L] %-5level %logger{36} %L %M -
%msg%xEx%n"/>
<contextName>logback</contextName>
<!--输出到控制台 ConsoleAppender-->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<!--展示格式 layout-->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${PATTERN}</pattern>
</layout>
<!--过滤器,只有过滤到指定级别的日志信息才会输出,如果level为ERROR,那么控制台只会输出
ERROR日志-->
<!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
<!-- <level>ERROR</level>-->
<!-- </filter>-->
</appender>
<!--正常的日志文件,输出到文件中-->
<appender name="fileDEBUGLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--如果只是想要 Info 级别的日志,只是过滤 info 还是会输出 Error 日志,因为 Error 的级别高,
所以我们使用下面的策略,可以避免输出 Error 的日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!--过滤 Error-->
<level>Error</level>
<!--匹配到就禁止-->
<onMatch>DENY</onMatch>
<!--没有匹配到就允许-->
<onMismatch>ACCEPT</onMismatch>
</filter>
<!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则
如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天
的日志改名为今天的日期。即,<File> 的日志都是当天的。
-->
<File>${logPath}/log_demo.log</File>
<!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个
磁盘空间-->
<FileNamePattern>${logPath}/log_demo_%d{yyyy-MM-dd}.log</FileNamePattern>
<!--只保留最近90天的日志-->
<maxHistory>90</maxHistory>
<!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
<!--<totalSizeCap>1GB</totalSizeCap>-->
</rollingPolicy>
<!--日志输出编码格式化-->
<encoder>
<charset>UTF-8</charset>
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<!--输出ERROR日志到指定的文件中-->
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--如果只是想要 Error 级别的日志,那么需要过滤一下,默认是 info 级别的,ThresholdFilter-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>Error</level>
</filter>
<!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则
如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天
的日志改名为今天的日期。即,<File> 的日志都是当天的。
-->
<File>${logPath}/error.log</File>
<!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个
磁盘空间-->
<FileNamePattern>${logPath}/error_%d{yyyy-MM-dd}.log</FileNamePattern>
<!--只保留最近90天的日志-->
<maxHistory>90</maxHistory>
<!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
<!--<totalSizeCap>1GB</totalSizeCap>-->
</rollingPolicy>
<!--日志输出编码格式化-->
<encoder>
<charset>UTF-8</charset>
当然,如果就不想用Spring Boot推荐的名字,想自己定制也行,只需要在配置文件中指定配置文件名
即可,如下:
懵逼了,一堆配置什么意思?别着急,下面一一介绍。
configuration节点
这是一个根节点,其中的各个属性如下:
1. scan :当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
2. scanPeriod :设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫
秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
3. debug :当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。
默认值为false。
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<!--指定最基础的日志输出级别-->
<root level="DEBUG">
<!--appender将会添加到这个loger-->
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileDEBUGLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
<!-- 定义指定package的日志级别-->
<logger name="org.springframework" level="DEBUG"></logger>
<logger name="org.mybatis" level="DEBUG"></logger>
<logger name="java.sql.Connection" level="DEBUG"></logger>
<logger name="java.sql.Statement" level="DEBUG"></logger>
<logger name="java.sql.PreparedStatement" level="DEBUG"></logger>
<logger name="io.lettuce.*" level="INFO"></logger>
<logger name="io.netty.*" level="ERROR"></logger>
<logger name="com.rabbitmq.*" level="DEBUG"></logger>
<logger name="org.springframework.amqp.*" level="DEBUG"></logger>
<logger name="org.springframework.scheduling.*" level="DEBUG"></logger>
<!--定义com.xxx..xx..xx包下的日志信息不上传,直接输出到fileDEBUGLog和fileErrorLog这个两个appender
中,日志级别为DEBUG-->
<logger name="com.xxx.xxx.xx" additivity="false" level="DEBUG">
<appender-ref ref="fileDEBUGLog"/>
<appender-ref ref="fileErrorLog"/>
</logger>
</configuration>
logging.config=classpath:logging-config.xml
root节点
这是一个必须节点,用来指定基础的日志级别,只有一个 level 属性,默认值是 DEBUG 。
该节点可以包含零个或者多个元素,子节点是 appender-ref ,标记这个 appender 将会添加到这个logger
中。
contextName节点
标识一个上下文名称,默认为default,一般用不到
property节点
标记一个上下文变量,属性有name和value,定义变量之后可以使用 ${} 来获取。
appender节点
用来格式化日志输出节点,有两个属性 name 和 class ,class用来指定哪种输出策略,常用就是控制台
输出策略和文件输出策略。
这个节点很重要,通常的日志文件需要定义三个appender,分别是控制台输出,常规日志文件输出,异
常日志文件输出。
该节点有几个重要的子节点,如下:
1. filter :日志输出拦截器,没有特殊定制一般使用系统自带的即可,但是如果要将日志分开,比
如将ERROR级别的日志输出到一个文件中,将除了 ERROR 级别的日志输出到另外一个文件中,此
时就要拦截 ERROR 级别的日志了。
2. encoder : 和pattern节点组合用于具体输出的日志格式和编码方式。
3. file : 节点用来指明日志文件的输出位置,可以是绝对路径也可以是相对路径
4. rollingPolicy : 日志回滚策略,在这里我们用了TimeBasedRollingPolicy,基于时间的回滚策略,
有以下子节点fileNamePattern,必要节点,可以用来设置指定时间的日志归档。
5. maxHistory : 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件,,例如设置为
30的话,则30天之后,旧的日志就会被删除
6. totalSizeCap : 可选节点,用来指定日志文件的上限大小,例如设置为3GB的话,那么到了这个
值,就会删除旧的日志
logger节点
可选节点,用来具体指明包的日志输出级别,它将会覆盖root的输出级别。
该节点有几个重要的属性如下:
1. name :指定的包名
2. level :可选,日志的级别
3. addtivity :可选,默认为true,将此logger的信息向上级传递,将有root节点定义日志打印。
如果设置为false,将不会上传,此时需要定义一个 appender-ref 节点才会输出。
总结
Spring Boot的日志选型以及如何自定义日志配置就介绍到这里,如果觉得有所收获,不妨点个关注,
分享一波,将是对作者最大的鼓励!!!
剩余388页未读,继续阅读
桃宝护卫队
- 粉丝: 1208
- 资源: 48
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0