五、Spring Boot日志记录

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wenwen513/article/details/88322564

一、Spring Boot之Hello World
二、Spring Boot注解和配置
三、Spring Boot核心功能之SpringApplication
四、Spring Boot核心功能之外部配置
Spring Boot 官方文档链接:https://spring.io/projects/spring-boot/#learn

1. 日志格式

Spring Boot的默认日志输出类似于以下示例:

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: [/*]

下面是输出项:

  • 日期和时间:毫秒精度,易于分类。
  • 日志级别:ERROR、WARN、INFO、DEBUG或TRACE。
  • 进程ID。
  • —分隔符,用于区分实际日志消息的开始。
  • 线程名称:用方括号括起来(可能被截断用于控制台输出)。
  • 记录器名称:这通常是源类名称(通常缩写)。
  • 日志消息。

2. 文件输出

默认情况下,Spring Boot 日志只记录到控制台,如果你想把日志写到文件,在 application.properties 中设置 logging.filelogging.path 属性。
下表显示这两个属性结合使用的情况:

logging.file logging.path 样例 描述
(none) (none) 只控制台记录日志
指定文件 (none) my.log 写入指定的日志文件,名称可以是一个确切的位置或相对于当前目录
(none) 指定文件 /var/log 写如spring.log到指定的目录,名称可以是一个确切的位置或相对于当前目录

日志文件默认为10MB 就会回滚,可以使用 loggin.file.max-size 更改大小限制。

3. 日志级别

在 application.properties 中使用 logging.level.= 设置日志级别。其中 level 为 TRACE、DEBUG、INFO、WARN、ERROR、FATAL 或 OFF,可以使用 logging.level.root 配置 root 日志记录器。
如以下示例:

logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

4. 自定义日志配置

如果我们需要自定义 Logback 日志,则在 resources 目录下创建 logback-spring.xml 文件,Spring Boot 会自动寻找并加载文件。

Logging系统 自定义
Logback logback-spring.xml,logback-spring.groovy,logback.xml,或logback.groovy
Log4j2 log4j2-spring.xml或log4j2.xml
JDK (Java Util Logging) logging.properties

下表是整理出来的各个属性:

Spring环境 系统属性 注释
logging.exception-conversion-word LOG_EXCEPTION_CONVERSION_WORD 记录异常时使用的转换词
logging.file LOG_FILE 如果定义,则在默认日志配置中使用
logging.file.max-size LOG_FILE_MAX_SIZE 最大日志文件大小(如果启用LOG_FILE),(只支持默认的Logback设置)
logging.file.max-history LOG_FILE_MAX_HISTORY 要保存的归档日志文件的最大数量(如果启用LOG_FILE),(只支持默认的Logback设置)
logging.path LOG_PATH 如果定义,则在默认日志配置中使用
logging.pattern.console CONSOLE_LOG_PATTERN 控制台上要使用的日志模式(stdout),(只支持默认的Logback设置)
logging.pattern.dateformat LOG_DATEFORMAT_PATTERN 日志日期格式的附加模式,(只支持默认的Logback设置)
logging.pattern.file FILE_LOG_PATTERN 在文件中使用的日志模式(如果启用了LOG_FILE),(只支持默认的Logback设置)
logging.pattern.level LOG_LEVEL_PATTERN 在呈现日志级别时使用的格式(默认%5p),(只支持默认的Logback设置)
PID PID 当前进程ID(如果可能的话会被发现,当还没有被定义为OS环境变量时)

自定义的 logback-spring.xml 文件如下:

<configuration scan="true" scanPeriod="10 seconds">

	<!-- Simple file output -->
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->  
		<encoder>
		    <pattern> 
		        [ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %logger{96} [%line] - %msg%n  
		    </pattern>
		    <charset>UTF-8</charset> <!-- 此处设置字符集 -->  
		</encoder>
	
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- rollover daily 配置日志所生成的目录以及生成文件名的规则 -->
			<fileNamePattern>lmis_bcs-logs/lmis_bcs-mylog-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<!-- or whenever the file size reaches 64 MB -->
				<maxFileSize>64 MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
	  
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>INFO</level>
		</filter>
		<!-- Safely log to the same file from multiple JVMs. Degrades performance! -->  
		<prudent>true</prudent>
	</appender>
	
	<!-- Console output -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
		<encoder>
			<pattern>
			    [ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %logger{96} [%line] - %msg%n
			</pattern>
			<charset>UTF-8</charset> <!-- 此处设置字符集 -->  
		</encoder>  
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">  
			<level>DEBUG</level>  
		</filter>  
	</appender>
	
	<!-- Enable FILE and STDOUT appenders for all log messages. By default, only log at level ERROR and above. --> 
	<root level="INFO">
		<appender-ref ref="FILE" />
		<appender-ref ref="STDOUT" />
	</root>  
  
  	<!-- For loggers in the these namespaces, log at all levels. -->
	<logger name="pedestal" level="ALL" />
	<logger name="hammock-cafe" level="ALL" />
	<logger name="user" level="ALL" />
	<!-- For loggers in the mybatis-->
	<logger name="com.ibatis" level="DEBUG" />
	<logger name="com.ibatis.common.jdbc.SimpleDataSource" level="DEBUG" />
	<logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG" />
	<logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="DEBUG" />
	<logger name="java.sql.Connection" level="DEBUG" />
	<logger name="java.sql.Statement" level="DEBUG" />
	<logger name="java.sql.PreparedStatement" level="DEBUG" />
</configuration>
展开阅读全文

没有更多推荐了,返回首页