首页 > 其他分享 >最全SpringBoot日志配置-按照日期和日志级别进行归档

最全SpringBoot日志配置-按照日期和日志级别进行归档

时间:2023-03-15 15:56:04浏览次数:42  
标签:SpringBoot -- dd yyyy MM 归档 日志 log

指定日志文件路径

spring的配置文件中配置:

logging:
  config: classpath:logback.xm

日志配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="tue" scanPeriod="60 seconds"
	debug="false">

	<!-- application.yml 传递参数,不能使用logback 自带的<property>标签 -->
	<!-- 日志输出路径,在yml文件中配置 -->
	<springProperty scope="context" name="logdir"
		source="logback.logdir" />
	<!-- 文件名 -->
	<springProperty scope="context" name="logName"
		source="logback.name" />

	<!-- 输出到控制台 Consoleappender -->
	<appender name="consoleLog"
		class="ch.qos.logback.core.ConsoleAppender">
		<!-- 展示格式 layout -->
		<layout class="ch.qos.logback.classic.PatternLayout">
			<pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
		</layout>
	</appender>

	<!-- infoLog 输出 -->
	<appender name="fileInfoLog"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 如果只是想要 info 级别的日志,只是过滤 info 还是会输出 error 日志,因为 Error 的日志级别更高。 使用下面的策略,可以避免输出 
			Error 日志 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<!-- 过滤 Error -->
			<level>ERROR</level>
			<!-- 匹配到就禁止 -->
			<onMatch>DENY</onMatch>
			<!-- 没有匹配到就允许 -->
			<onMismatch>ACCEPT</onMismatch>
		</filter>

		<!-- 日志名称,如果没有 File 属性,name只会使用FileNamePattern的文件路径规则 如果同时又<File>和<FileNamePattern>,那么当天日志时<File>.明天会自动把今天的日志名改为今天的日期 
			即:<File> 的日志都是当天的。 -->
		<File>${logdir}/info.${logName}.log</File>
		<!-- 滚动策略,按照时间滚动 TimeBasedRollingPolicy -->
		<rollingPolicy
			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 文件路径,定义了日志的切分方式 把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间 -->
			<FileNamePattern>${logdir}/info.${logName}.%d{yyyy-MM-dd}.log</FileNamePattern>
			<!-- 设置 日志保留时间 30天 -->
			<maxHistory>30</maxHistory>
			<!-- 用来指定日志文件的上限大小,到上限之后会删除旧日志 -->
			<!-- <totalSizeCap>1GB</totalSizeCap> -->
		</rollingPolicy>

		<!-- 日志输出编码格式化 -->
		<encoder>
			<charset>UTF-8</charset>
			<pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
		</encoder>
	</appender>

	<!-- Error 级别日志文件 -->
	<appender name="fileErrorLog"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 如果只是想要 Error 级别的日志,那么需要过滤一下.默认是info 级别的,ThresholdFilter -->
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>Error</level>
		</filter>
		<!-- 日志名称,如果没有 File 属性,name只会使用FileNamePattern的文件路径规则 如果同时又<File>和<FileNamePattern>,那么当天日志时<File>.明天会自动把今天的日志名改为今天的日期 
			即:<File> 的日志都是当天的。 -->
		<File>${logdir}/error.${logName}.log</File>
		<!-- 滚动策略,按照时间滚动 TimeBasedRollingPolicy -->
		<rollingPolicy
			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 文件路径,定义了日志的切分方式 把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间 -->
			<FileNamePattern>${logdir}/error.${logName}.%d{yyyy-MM-dd}.log</FileNamePattern>
			<!-- 设置 日志保留时间 30天 -->
			<maxHistory>30</maxHistory>
			<!-- 用来指定日志文件的上限大小,到上限之后会删除旧日志 -->
			<!-- <totalSizeCap>1GB</totalSizeCap> -->
		</rollingPolicy>

		<!-- 日志输出编码格式化 -->
		<encoder>
			<charset>UTF-8</charset>
			<pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
		</encoder>
	</appender>

	<!-- 开发环境日志级别为DEBUG ,可以使用逗号分隔列表指定多个配置文件 -->
	<springProfile name="dev">
		<root level="INFO">
			<appender-ref ref="consoleLog" />
			<appender-ref ref="fileInfoLog" />
			<appender-ref ref="fileErrorLog" />
		</root>
	</springProfile>
	
	<springProfile name="test,prod">
		<root level="INFO">
		<appender-ref ref="consoleLog" />
		<appender-ref ref="fileInfoLog" />
		<appender-ref ref="fileErrorLog" />
		</root>
	</springProfile>
</configuration>

标签:SpringBoot,--,dd,yyyy,MM,归档,日志,log
From: https://www.cnblogs.com/Fzeng/p/17218838.html

相关文章

  • SpringBoot+MyBatis批量插入数据的三种方式
    1.背景介绍在开发过程中,我们经常会遇到往数据库表中插入大量数据的场景,比如excel批量导入数据。那么该如何快速地插入数据呢?我们可以考虑使用批量插入来实现,实测100000......
  • Loguru—轻量日志
    目录Loguru的功能Loguru的示例Loguru是一个轻量级的Python日志库,使日志记录变得简单而美观。它具有易于使用的API,可以轻松地集成到任何Python应用程序中。Loguru的功能......
  • Python脚本实现值更新事件赋值过程记录日志监控
    #LogWatch实现值更新事件赋值过程记录日志监控clr.AddReference('System')clr.AddReference('Kingdee.BOS')clr.AddReference('Kingdee.BOS.Core')fromKingdee.BOSimport......
  • [k8s]使用nfs挂载pod的应用日志文件
    前言某些特殊场景下应用日志无法通过elk、grafana等工具直接查看,需要将日志文件挂载出来再处理。本文以nfs作为远程存储,统一存放pod日志。系统版本:CentOS7x86-64宿主......
  • Dynamics 365 Reporting Services 报表日志目录
     默认目录为 <drive>\ProgramFiles\MicrosoftSQLServer\MSRS130.MSSQLSERVER\ReportingServices\LogFiles。  排查ReportingServices报表问题:https://lea......
  • 机器学习日志 泰坦尼克飞船 Spaceship Titanic
    PassengerId——乘客编号。每个编号的形式都表示乘客与是否是组团旅行有关,比如家庭出游,集体出差等,因此编号中有部分是表示他们在团队中的号码。但有部分乘客是独自旅行。H......
  • 京东App秒级百G日志传输存储架构设计与实战
    本文作者:平台业务研发部-武伟峰,数据与智能部-李阳背景在日常工作中,我们通常需要存储一些日志,譬如用户请求的出入参、系统运行时打印的一些info、error之类的日志,从而对系......
  • SpringBoot WEB项目文件夹上传下载解决方案
    ​PHP用超级全局变量数组$_FILES来记录文件上传相关信息的。1.file_uploads=on/off 是否允许通过http方式上传文件2.max_execution_time=30 允许脚本最大执行时间......
  • 如何将自定义的日志直接写入到 mysql 数据库中?
    要将自定义的日志直接写入MySQL数据库中,您可以使用以下步骤:安装MySQL数据库,并创建一个新的数据库和表来存储日志数据。在您的代码中,使用MySQL连接器来连接到MySQL数据库。创......
  • springboot 中使用@Value 获取配置文件中参数问题
    springboot中使用@Value("${spring.redis.password}")获取配置文件中参数时,如果配置文件中没有相关参数,项目启动时会报错Causedby:java.lang.IllegalArgumentExcep......