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 ...
随机推荐
- Microsoft SQL Server 2012 管理 (2): 实例与数据库管理
1.加密数据库 /* Module 2 Implementing Transparent Data Encryption */ -- 2.1 Create DataBase Master Key US ...
- HLSL-高级着色语言简介【转】
HLSL-High Level Shader Language 优点 用来书写Vertex Shader和Pixel Shader程序的代码,语法类似于C/C++,在DirectX 8.x的时代,Sh ...
- JavaScript正则表达式匹配中英文以及常用标点符号白名单写法
我们在编程中经常会遇到特殊字符过滤的问题,今天我们提供一种白名单方式过滤 直接上代码 function RegEXP(s) { var rs = ""; for (var i = ...
- C#在dataGridView中遍历,寻找相同的数据并定位
1. C#在dataGridView中遍历,寻找相同的数据并定位 [c-sharp] view plain copy int row = dataGridView1.Rows.Count;// ...
- Godot开发环境与学习资源
记得第一次听到Godot的名字时还在深圳工作,刚刚接触Unity快一年,只是匆匆在Github上star了,就没有继续了.后面时不时翻开它的Git主页,然而一直没有下载过,每每想看看开源引擎都去看Or ...
- XCode - 无法对iPhone真机调试的解决方法!
OSX:10.14 XCode:10.1 真机:iPhone 4S 错误很多啊,并非编译错误,编译已经成功了,但是无法安装到真机,我真不理解啊!!由于真的没有想到能够解决,有的错误没有截图,先看部分错 ...
- xgboost 和GBDT的区别
作者:wepon链接:https://www.zhihu.com/question/41354392/answer/98658997来源:知乎 传统GBDT以CART作为基分类器,xgboost还支持 ...
- 纯文本-FileInputStream的编码与解码方式
前言:以下分析只针对纯文本 1.FileInputStream默认的编码方式就是文件的编码方式 即:源文件是什么编码方式,则利用FileInputStream默认读取的字节数组,就是什么编码方式. 例 ...
- PARSER_JS_PRECISION_RANGE_EXCEEDED 错误
{ [Error: parseLengthCodedNumber: JS precision range exceeded, number is >= 53 bit: "3037620 ...
- php curl 伪造IP来源的实例代码
来源:http://www.jb51.net/article/31694.htm curl 它不但可以模仿用户登录,还可以模仿用户IP地址哦,为伪造IP来源,本实例仅供参考哦 //伪造ip ; $i ...