Spring Boot日志配置详解
来源:互联网 发布:java home配置 编辑:程序博客网 时间:2024/05/02 04:27
前言:
Spring Boot使用Commons Logging进行所有内部日志记录,但是将底层日志实现保留为打开状态。为Java Util Logging, Log4J2和Logback提供了默认配置 。在每种情况下,记录器都预先配置为使用控制台输出,可选的文件输出也可用。默认情况下,如果使用“Starter”,Logback将用于日志记录。还包括适当的Logback路由,以确保使用Java Util日志记录,Commons Logging,Log4J或SLF4J的相关库都能正常工作。一般来说,你不需要改变你的日志依赖性,Spring Boot的默认设置就可以正常工作。
日志格式:
spring boot 默认输出格式:
2017-12-08 11:50:59.838 INFO 12232 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@313ac989: startup date [Fri Dec 08 11:50:59 CST 2017]; root of context hierarchy[ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)[ main] o.a.c.c.StandardService : Starting service [Tomcat][ main] o.a.c.c.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.16[ost-startStop-1] o.a.c.c.C.[.[.[/] : Initializing Spring embedded WebApplicationContext[ost-startStop-1] o.s.w.c.ContextLoader : Root WebApplicationContext: initialization completed in 1605 ms[ost-startStop-1] o.s.b.w.s.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/][ost-startStop-1] o.s.b.w.s.FilterRegistrationBean : Mapping filter: 'metricsFilter' to: [/*][ost-startStop-1] o.s.b.w.s.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*][ost-startStop-1] o.s.b.w.s.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*][ost-startStop-1] o.s.b.w.s.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*][ost-startStop-1] o.s.b.w.s.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*][ost-startStop-1] o.s.b.w.s.FilterRegistrationBean : Mapping filter: 'webRequestLoggingFilter' to: [/*][ost-startStop-1] o.s.b.w.s.FilterRegistrationBean : Mapping filter: 'applicationContextIdFilter' to: [/*][ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@313ac989: startup date [Fri Dec 08 11:50:59 CST 2017]; root of context hierarchy[ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/test],methods=[GET]}" onto public java.lang.String com.battle.Battle24Application.loggerLevel()
以下项目被输出:
日期和时间 - 精确到毫秒,易于排序。
日志级别- , ERROR,WARN 或。INFO、DEBUG、TRACE
进程ID。
一个—分离器来区分实际日志消息的开始。
线程名称 - 括在方括号中(可能会截断控制台输出)。
记录器名称 - 这通常是源类名称(通常缩写)。
日志消息。
Logback没有一个FATAL级别(它被映射到ERROR)
接下来使用Log4j2来打印日志
依賴如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions></dependency><!-- log4j2 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId></dependency>
spring-boot-starter中exclusions掉的spring-boot-starter-logging依賴配置如下:
<dependencies> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId></dependency><dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId></dependency><dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId></dependency><dependency> <groupId>org.slf4j</groupId> <artifactId>log4j-over-slf4j</artifactId> </dependency></dependencies>
從以上依賴jar所看,spring-boot默认的日志依赖jar是logback来打印日志。
log4j2.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?><!--设置log4j2默认log级别为warn--><configuration status="warn"> <!-- 以下是添加日志输出的位置及输出格式,格外配置日志文件大小等等 --> <appenders> <!-- 控制台输出 --> <!--格式化输出:%d表示日期,%thread表示线程名,%m:日志消息,%n是换行符--> <console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" /> </console> <!-- RollingFile标签 滚动日志记录文件 --> <!-- INFO日志级别 --> <!-- fileName日志文件输出的位置,file文件名--> <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"> <Filters> <ThresholdFilter level="INFO"/> <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/> </Filters> <!-- 輸出格式 --> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <!-- 设置策略 --> <Policies> <!-- 基于时间的触发策略。该策略主要是封存的log文件。两个参数: interval:整型;modulate:布尔型,说明是否对封存时间进行调制 ,指定两次封存动作之间的时间间隔。 单位:以日志的命名精度来确定单位,比如yyyy-MM-dd-HH 单位为小时, yyyy-MM-dd-HH-mm 单位为分钟。 --> <!-- 按天分日志文件 --> <TimeBasedTriggeringPolicy/> <!-- 按大小分日志文件 --> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> <!-- 文件保留30天 --> <MaxHistory>30</MaxHistory> </RollingFile> <!-- 日志级别 --> <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"> <Filters> <ThresholdFilter level="WARN"/> <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/> </Filters> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> </RollingFile> <!-- error 日志级别 --> <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"> <ThresholdFilter level="ERROR"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> </RollingFile> </appenders> <loggers> <!--过滤掉spring和hibernate的一些无用的debug信息--> <logger name="org.springframework" level="INFO"/> <logger name="org.hibernate" level="INFO"/> <logger name="com.battle" level="debug" /> <!-- 配置记录器级别 --> <root level="all"> <appender-ref ref="Console"/> <appender-ref ref="RollingFileInfo"/> <appender-ref ref="RollingFileWarn"/> <appender-ref ref="RollingFileError"/> </root> </loggers></configuration>
xml中看和log4j 1.x类似,log4j2也有logger,appender等概念,下面几个差别:
配置文件是log4j2.xml,而不是log4j.xml
获取用户HOME目录的占位符是“
RollingFile Appender中,有filePattern属性,可以更好的指定“卷动”文件的文件名(另外还可以用gzip对文件进行压缩哦)
没有了之前的LevelRangeFilter,现在需要用两个ThresholdFilter来实现单个log级别的过滤功能
可以通过SizeBasedTriggeringPolicy trigger来让文件不至于过大
阅读全文
0 0
- Spring Boot日志配置详解
- Spring boot日志配置
- spring boot日志理论详解
- spring boot 基础日志配置
- Spring Boot之日志配置
- spring boot配置logback日志
- spring boot 基础日志配置
- Spring Boot 详细日志配置
- spring boot日志管理配置
- spring boot 内置日志配置
- spring boot slf4j日志配置
- Spring boot日志配置笔记
- spring boot 日志配置 logback-spring.xml
- Spring boot(2)-配置详解
- Spring boot(2)-配置详解
- spring-boot日志系统的详解
- Spring Boot 配置日志输出等级
- Spring Boot日志配置logback,log4j
- codemirro 设置提示信息
- Bridging signals
- 使用Mybatis-Generator命令提示符方式自动生成Dao、Model、Mapping相关文件
- spring 定时任务
- 学习日志2017.12.08
- Spring Boot日志配置详解
- 【备忘】2017年数据分析与机器学习实战到经典案例全套高清视频教程(基于Python3.5 anaconda4.2)15G
- 使用NLTK对中文文本进行简单分析
- java学习、java教程:Java基础常见英语词汇
- Python3 初学实践案例(2)将源目录中的图片用MD5命名并可以设定目标目录
- 修改样式input rido
- Linux中设置定期备份oracle数据库
- 冒泡排序 acm(收藏)
- Python2.7使用plotly绘制本地散点图和折线图实例