点击上方“芋道源码”,选择“置顶公众号”
技术文章第一时间送达!
源码精品专栏
****
摘要: 原创出处 http://blog.battcn.com/2018/04/23/springboot/v2-config-logs/ 「唐亚峰」欢迎转载,保留摘要,谢谢!
- 编码对照表
- springProfile
- springProperty
文件保存
自定义日志配置
Logback扩展配置
总结
说点什么
SpringBoot
是为了简化
Spring
应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程
Spring Boot
内部采用的是
Commons Logging
进行日志记录,但在底层为 Java Util Logging、Log4J2、Logback 等日志框架提供了默认配置 。
Java 虽然有很多可用的日志框架,但请不要担心,一般来说,使用
SpringBoot
默认的
Logback
就可以了。
日志格式
SpringBoot
的默认输出的日志格式如下:
2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52
2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1358 ms
2014-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2014-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
输出如下元素:
Logback 是没有 FATAL级别的日志,它将被映射到 ERROR
日志输出
SpringBoot
默认为我们输出的日志级别为
INFO
、
WARN
、
ERROR
,如需要输出更多日志的时候,可以通过以下方式开启
日志输出级别配置
logging.level.root = WARN
logging.level.org.springframework.web = DEBUG
logging.level.org.hibernate = ERROR
#比如 mybatis sql日志
logging.level.org.mybatis = INFO
logging.level.mapper所在的包 = DEBUG
日志输出格式配置
颜色编码
如果终端支持
ANSI
,默认情况下会给日志上个色,提高可读性,可以在配置文件中设置
spring.output.ansi.enabled
来改变默认值
编码对照表
如果想修改日志默认色值,可以通过使用
%clr
关键字转换。比如想使文本变为黄色
%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}
。目前支持的颜色有(
blue
、
cyan
、
faint
、
green
、
magenta
、
red
、
yellow
)
文件保存
默认情况下,
SpringBoot
仅将日志输出到控制台,不会写入到日志文件中去。如果除了控制台输出之外还想写日志文件,则需要在
application.properties
设置
logging.file
或
logging.path
属性。
日志文件在达到
10MB
时进行切割,产生一个新的日志文件(如:
spring.1.log、spring.2.log
),新的日志依旧输出到
spring.log
中去,默认情况下会记录
ERROR
、
WARN
、
INFO
级别消息。
自定义日志配置
由于日志在
ApplicationContext
之前就初始化好了,所以
SpringBoot
为我们提供了
logging.config
属性,方便我们配置自定义日志文件。默认情况它会根据日志的依赖自动加载。
Logback扩展配置
该扩展配置仅适用
logback-spring.xml
或者设置
logging.config
属性的文件,因为
logback.xml
加载过早,因此无法获取
SpringBoot
的一些扩展属性
使用扩展属性
springProfile
与
springProperty
让你的
logback-spring.xml
配置显得更有逼格,当别人还在苦苦挣扎弄logback-{profile}.xml的时候 你一个文件就搞定了…
springProfile
springProfile
标签使我们让配置文件更加灵活,它可以选择性的包含或排除部分配置。
springProfile name="dev"
!-- 开发环境时激活 --
/springProfile
springProfile name="dev,test"
!-- 开发,测试的时候激活--
/springProfile
springProfile name="!prod"
!-- 当 "生产" 环境时,该配置不激活--
/springProfile
案例
!-- 开发环境日志级别为DEBUG/并且开发环境不写日志文件 --
springProfile name="dev"
root level="DEBUG"
appender-ref ref="STDOUT"/
/root
/springProfile
!-- 测试环境日志级别为INFO/并且记录日志文件 --
springProfile name="test"
root level="INFO"
appender-ref ref="FILE"/
appender-ref ref="STDOUT"/
/root
/springProfile
springProperty
springProperty
标签可以让我们在 Logback 中使用 Spring Environment 中的属性。如果想在
logback-spring.xml
中回读
application.properties
配置的值时,这是一个非常好的解决方案
!-- 读取 spring.application.name 属性来生成日志文件名
scope:作用域
name:在 logback-spring.xml 使用的键
source:application.properties 文件中的键
defaultValue:默认值
--
springProperty scope="context" name="logName" source="spring.application.name" defaultValue="myapp.log"/
appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"
filelogs/${logName}.log/file
/appender
总结
目前很多大佬都写过关于 SpringBoot 的教程了,如有雷同,请多多包涵,本教程基于最新的
spring-boot-starter-parent:2.0.1.RELEASE
编写,包括新版本的特性都会一起介绍…
666. 彩蛋
如果你对 Dubbo 感兴趣,欢迎加入我的知识星球一起交流。
目前在知识星球(https://t.zsxq.com/2VbiaEu)更新了如下 Dubbo 源码解析如下:
01. 调试环境搭建
02. 项目结构一览
03. 配置 Configuration
04. 核心流程一览
05. 拓展机制 SPI
- 线程池
07. 服务暴露 Export
08. 服务引用 Refer
注册中心 Registry
动态编译 Compile
动态代理 Proxy
服务调用 Invoke
调用特性
过滤器 Filter
NIO 服务器
P2P 服务器
HTTP 服务器
序列化 Serialization
集群容错 Cluster
优雅停机
日志适配
状态检查
监控中心 Monitor
管理中心 Admin
运维命令 QOS
链路追踪 Tracing
…
一共 60 篇++