Spring boot 采用logback-spring.xml做日志管理

Spring boot 官网给出的参考:

When possible, we recommend that you use the -spring variants for your logging configuration (for example, logback-spring.xml rather than logback.xml). If you use standard configuration locations, Spring cannot completely control log initialization.

Profile-specific Configuration

The <springProfile> tag lets you optionally include or exclude sections of configuration based on the active Spring profiles. Profile sections are supported anywhere within the <configuration> element. Use the name attribute to specify which profile accepts the configuration. The <springProfile> tag can contain a simple profile name (for example staging) or a profile expression. A profile expression allows for more complicated profile logic to be expressed, for exampleproduction & (eu-central | eu-west). Check the reference guide for more details. The following listing shows three sample profiles:

 

官网地址:https://docs.spring.io/spring-boot/docs/2.1.2.RELEASE/reference/htmlsingle/

1、Spring boot 框架中配置logback-spring.xml

 首先将logback-spring.xml放在项目目录的resource下,然后在项目的配置文件application.yml加入如下配置:

#日志配置
logging:
  config: classpath:logback-spring.xml

直接给出logback-spring.xml配置文件供参考:

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

	<!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
	<property name="LOG_PATTERN"
			  value="%red(%date{HH:mm:ss.SSS})  %green([%thread] %-5level %logger{36} - %msg%n)" />

	<!-- 开发、测试环境 -->
	<springProfile name="dev,test">
		<!-- 定义日志存储的路径,不要配置相对路径 F:\正反斜杠有区别 -->
		<!-- F:\正反斜杠有区别 -->
		<property name="FILE_PATH" value="F:\logs/stdout.log.%d{yyyy-MM-dd}.%i.log" />
	</springProfile>

	<!-- 生產環境 -->
	<springProfile name="pro">
		<!-- 定义日志存储的路径,不要配置相对路径 -->
		<property name="FILE_PATH" value="/user/lib/cccf/logs/cccf.%d{yyyy-MM-dd}.%i.log" />
	</springProfile>

	<!-- 控制台输出日志 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<!-- 按照上面配置的LOG_PATTERN来打印日志 -->
			<pattern>${LOG_PATTERN}</pattern>
		</encoder>
	</appender>

	<!--每天生成一个日志文件,保存15天的日志文件。rollingFile是用来切分文件的 -->
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 设置按尺寸和时间(同时满足)分割 -->
		<rollingPolicy
				class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<!-- rollover daily -->
			<fileNamePattern>cdlgb_logs\%d{yyyy-MM-dd}/stdout.log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
			<!-- each file should be at most 10MB, keep 15 days worth of history,
				but at most 3GB -->
			<maxFileSize>10MB</maxFileSize>
			<maxHistory>15</maxHistory>
			<totalSizeCap>1GB</totalSizeCap>
		</rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern>
			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
		</encoder>
	</appender>

	<!-- project default level -->
	<logger name="com.hiynn.cccf" level="INFO" />

	<!-- 日志输出级别:DEBUG,INFO,WARN,ERROR四种-->
	<root level="INFO">
		<appender-ref ref="console" />
		<appender-ref ref="FILE" />
	</root>
</configuration>

我们的配置文件实现以下功能点:

1、日志输出格式自定义。

2、保留最近N天的日志。

3、按日期每天创建文件夹管理日志。

4、每个文件下日志文件大小超过10M就会创建新的日志文件,方便从庞大日志文件中排查错误。

扫描二维码关注公众号,回复: 5981545 查看本文章

5、实现多环境日志管理设置。

6、对日志级别进行管理。

2、最终结果展示:

最近半个月的日志:

每天日志详情:

 转载请注明原创,请尊重原创。

猜你喜欢

转载自blog.csdn.net/yelang10000/article/details/87271802