【SpringBoot】SpringBoot集成logback,实现日志管理

首先在src/main/resource中创建logback-spring.xml文件,一般默认就用此名字,如果更改名字的话就需要在配置文件中进行相关文件路径、名称的配置;文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

	<contextName>SpringBoot-Logging</contextName>
	
	<!-- 定义日志文件的存储路径 -->
	<property name="ROOT_PATH" value="/root/logs" />
	
	<!-- springprofile可以根据当前活动的配置文件进行日志的配置;适应于多环境配置的情况 -->
	<springProfile name="dev">
		
		<!--springProperty允许从application.properties中读取配置 -->
		<!-- 如下在application.properties中就要有一个spring.application.name的配置 -->
		<springProperty scope="context" name="logName" source="spring.application.name" defaultValue="logging" />
		
		<!-- appender负责写日志的组件;如下为将日志写入到 ConsoleAppender-->
		<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
			<!--  encoder负责两件事,1、把日志信息转换成字节数组;2、把字节数组写入到输出流。 -->
			<encoder>
				<!--%highlight %boldGreen设置颜色,也可以设置为其他颜色 -->
        	 	<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %boldGreen(%logger{50}) - %msg%n</pattern> 
        	</encoder>
		</appender>
		
		<!-- RollingFileAppender滚动记录日志,先将日志记录到指定文件,符合某一个条件之后,将日志记录到其他文件 -->
		<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
			<file>${ROOT_PATH}/${logName}.log</file>
			
			<!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 -->
    		<!-- TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责触发滚动【本例中,按照日期进行滚动,每日的日志记录到一个文件中,到第二天时触发滚动,将前一天的文件进行归档】 -->
			<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
				 <!--
				 	  滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动 
				 	 %i:当文件大小超过maxFileSize时,按照i进行文件滚动;如:2019-12-06-0.log
				 -->
           		 <FileNamePattern>${ROOT_PATH}/%d{yyyy-MM-dd}-%i.log</FileNamePattern>
           		 <!--设置日志文件保留天数;此处设置为30天 -->
            	<MaxHistory>30</MaxHistory>
            	
            	<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
					<!-- 
						当日志文件超过maxFileSize指定的大小是,根据上面提到的%i进行日志文件滚动 
						注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,
						必须配置timeBasedFileNamingAndTriggeringPolicy
					 -->
		        	<maxFileSize>2000MB</maxFileSize>
		      	</timeBasedFileNamingAndTriggeringPolicy>
			</rollingPolicy>
			
			<!-- 设置输出文件的格式 -->
	        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
	            <!--
	            	格式化输出:%d表示日期,
	            			 %thread表示线程名,
	            			 %-5level:级别从左显示5个字符宽度
	            			 %logger{50} 表示logger名字最长50个字符,否则按照句点分割
	            			 %msg:日志消息,
	            			 %n是换行符 -->
	            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
	        </encoder>
		</appender>
		
		   <!-- 
		       logger主要用于存放日志对象,root的子类,也可以定义日志类型、级别
		       name:表示匹配的logger类型前缀,也就是包的前半部分
		       level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR
		       additivity:作用在于logger是否使用 root配置的appender以及日志级别进行输出,默认为true;
		       false:表示只用当前logger的appender-ref,true:
		       		    表示当前logger的appender-ref和rootLogger的appender-ref都有效
		   -->
		<logger name="com.learn.controller"/>
		<logger name="com.learn.config" level="DEBUG" additivity="false"/>
		
		
		   <!-- 
			   root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应,
			       要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。 
		   -->
		  <root level="INFO">
		  	<appender-ref ref="CONSOLE" />
        	<appender-ref ref="FILE" />
		  </root>

	</springProfile>
</configuration>

相关的标签的作用以及使用都有相应的注解。

参考博客:https://www.jianshu.com/p/6f093b0b0c8a
https://www.jb51.net/article/171124.htm

SpringBoot工程的结构如下:
在这里插入图片描述

发布了66 篇原创文章 · 获赞 6 · 访问量 9413

猜你喜欢

转载自blog.csdn.net/qgnczmnmn/article/details/103422952