SpringBoot入门 (三) 日志配置
上一篇博文记录了再springboot项目中读取属性文件中配置的属性,本文学习在springboot项目中记录日志。
日志记录在项目中是很常见的一个功能了,对排查问题有很大帮助,也可以做分类分析及统计。SpringBoot内部使用的是Commons Logging做日志的记录,但是对其他的日志框架也提供了默认的配置,如:Java util Logging,Log4j2,Logback,每一种情况下日志记录器都预先配置为使用控制台输出和可选的文件输出。
日志格式及内容
如果我们的SpringBoot项目使用的是Starters启动器,默认使用LogBack做日志记录。如我们启动项目时在控制台上看到的

输出的信息有以下几点
日期和时间:精确到毫秒,如 2019-01-24 14:03:14.260
日志级别:日志级别有ERROR,WARN,INFO,DEBUG,TRACE,如上边的INFO
进程号:如上边的 10348
分割线:如上边的 ---
线程名:如上边用[]括起来的
日志名:一般使用的是代码的类名
日志信息:我们在代码中要输出的内容
日志输出
Spring Boot中默认配置了ERROR、WARN和INFO级别的日志输出到控制台,我们也是可以修改的日志级别的,比如我们修改为debug级别,有两种方式
1 使用命令 $ java -jar myapp.jar --debug
2 在application.properties中添加配置debug=true 开启debug,此配置只会对核心Logger(如内嵌的tomcat容器、hibernate、spring)有效,但是我们自己应用的日志并不会输出为DEBUG级别,需要自己配置,如 logger.level.root=debug
日志级别
可以通过logger.level.*=LEVEL来改变对应日志级别,如
logging.level.root=warn
logging.level.org.springframework.web=info
logging.level.org.hibernate=error ######修改mubatis日志级别
logging.level.org.mybatis=info
#mapper接口为debug级别
logging.level.mybatis mapper接口所在包=debug
输出文件
SpringBoot默认只在控制台输出日志信息,如果想把日志信息写入文件中记录,需要在application.properties中配置,如
##文件存放路径
logging.path=/usr/local/log
##写入的文件
logging.file=myapp.log
##日志文件大小,超过大小时会在新的文件中记录
logging.file.max-size=10Mb
##日志保存时间 天
logging.file.max-history=15
集成log4j
SpringBoot在高版本中已经不支持log4j了,支持的是log4j2。在pom.xml中引入需要的log4j2的jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
由于web依赖包中已经有了log的依赖,所以我们选去掉web中的log依赖,避免jar包冲突。
然后配置log4j2的属性,在官方文档中可以看到集成的日志文件的命名如下

在resources目录下创建一个log4j2-spring.xml文件
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<properties>
<!-- 文件输出格式 -->
<property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss,SSS} |-%-5level [%thread] %c [%L] -| %msg%n</property>
</properties>
<appenders>
<!--添加一个控制台追加器-->
<Console name="Console" target="system_out">
<PatternLayout pattern="${PATTERN}" />
</Console>
<!--添加一个文本追加器,文件位于E:\\logs目录下,名为HelloWorld.log-->
<File name="File" fileName="E:\\logs\\HelloWorld.log">
<PatternLayout>
<pattern>${PATTERN}</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
</File>
</appenders>
<loggers>
<root level="info">
<appenderref ref="File" />
<!--为了直观,在控制天中也输出info级别的日志-->
<appenderref ref="Console" />
</root>
<!--把org.springframework包下的所有日志输出到log文件,additivity="false"表示不输出到控制台-->
<Logger name="org.springframework" level="debug" additivity="true">
<appenderRef ref="File" />
</Logger>
</loggers>
</configuration>
正式项目中,我们需要对上述xml文件中的配置信息做些修改。写一个控制器访问,看看输出的信息
@RestController
public class HelloController { private static final Logger logger = LoggerFactory.getLogger(HelloController.class); @RequestMapping("/hello")
public String hello(){
logger.info("使用log4j输出日志!");
return "helloworld";
} }
控制台和生成的log文件中输出的信息一致


SpringBoot入门 (三) 日志配置的更多相关文章
- springboot 入门三- 读取配置信息二(读取属性文件方式)
在上篇文章中简单介绍自带读取方式.springboot提供多种方式来读取 一.@ConfigurationProperties(value="my") 支持更灵活的绑定及元数据的支 ...
- SpringBoot(三) SpringBoot中的日志配置
SLF4J Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logb ...
- SpringBoot整合+logback日志配置
本次演示的代码结构如下,基于maven,整合SpringBoot.Spring.Mybaits的SSM框架.同时测试logback日志框架的使用及配置. 1.创建maven工程,修改pom.xml文件 ...
- springboot 入门八-自定义配置信息(编码、拦截器、静态资源等)
若想实际自定义相关配置,只需要继承WebMvcConfigurerAdapter.WebMvcConfigurerAdapter定义些空方法用来重写项目需要用到的WebMvcConfigure实现.具 ...
- 01.springboot入门--启用自动配置注解EnableAutoConfiguration
springboot入门 <parent> <groupId>org.springframework.boot</groupId> <artifactId&g ...
- SpringBoot学习(三):日志
1.日志框架 小张:开发一个大型系统: 1.System.out.println(""):将关键数据打印在控制台:去掉?写在一个文件? 2.框架来记录系统的一些运行时信息: ...
- SpringBoot之简单日志配置
我的目的指定一个文件夹输出:(不采用指定文件的原因是一个文件的大小时间长了会很大,不利于处理) logging: level: root: INFO org.sselab: controller: I ...
- springboot中的日志配置
日志方式:每天日志存放在一个文件中,info和warn日志存放一个文件,error存放一个文件 创建文件 logback-spring.xml <?xml version="1.0&q ...
- SpringBoot入门教程(八)配置logback日志
Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-access.logback-c ...
随机推荐
- UT源码+019
设计三角形问题的程序 输入三个整数a.b.c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形.等腰三角形.一般三角形(特殊的还有直角三角形),以及不构成三角形.(等腰直角 ...
- 使用sos查看.NET对象内存布局
前面我们图解了.NET里各种对象的内存布局,我们再来从调试器和clr源码的角度来看一下对象的内存布局.我写了一个测试程序来加深对.net对象内存布局的了解: using System; using S ...
- 解决 EntityFrameworkCore 执行 Add-Migration命令提示无法识别转义符的错误
版本.asp.net core 2.0 EntityFrameworkCore2,0,. 之前执行Add-Migration 命令 提示无法识别的转义序列,各种不成功, 解决办法,找到 项目里面的 ...
- WPF窗口启动时最大化
在xaml对应的后台代码文件的初始化方法中: public ShellView() { InitializeComponent(); #region 启动时串口最大化显示 Rect rc = Syst ...
- JAVA 从头开始<四>
一.switch 1.根据输入月份获取季节 import java.util.*; class Demo8{ public static void main(String[] args) { Syst ...
- Asp.Net分页生成页码超链接方法
namespace Common { public class PageLinkHelp { /// <summary> /// 生成分页超链接标签 /// 使用了Bootstrap3的分 ...
- hot code loading in nodejs
Hot Code Loading in Node.js Node.js Web应用代码热更新的另类思路 Reading through Fever today, this post by Jack M ...
- 简述项目中优化sql语句执行效率的方法,从哪些方面,sql语句性能如何分析?
(1)尽量选择较小的列: (2)将where中用的比较频繁的字段建立索引: (3)select中避免使用*: (4)避免在索引列上使用计算.not in和<>等操作: (5)当只需要一行数 ...
- snmpv3-snmpd.conf解析
1.先指定createUser语句,设置密码和传输密钥. createUser user1 createUser user2 MD5 user2password createUser user3 MD ...
- uiautomatorviewer 双击闪退问题解决
最近在学习app自动测试,结果在打开uiautomatorviewer查看app界面元素时,就出现了闪退的问题,找了很多很多方法,最后终于可以解决了,详情请继续往下看 首次安装adt的步骤 将下载的压 ...