【Logback】Spring boot 配置多环境的logback

一、背景描述

由于MAC环境本地启动项目存在目前权限问题,需要与测试环境不一致只,为了不每次修改代码都修改本地目录,则想配置日志目录的多环境支持

二、实现方案

1、application-local.yml配置

复制代码
logging:
    config: classpath:logback-spring.xml
    # 根据自己springboot版本配置,ruoyi是2.5.15
    file:
        path: /Users/marion/data

2、ruoyi配置logback-spring.xml

在 Logback 配置文件中,您可以使用 <statusListener> 元素来打印 Logback 变量的值。

以下是一个示例,在该示例中,我们通过配置一个 <statusListener> 元素来将 Logback 变量打印到控制台:

在上述示例中,我们使用 class 属性指定了 ch.qos.logback.core.status.OnConsoleStatusListener 类作为状态监听器。这个状态监听器会在启动时将日志输出到控制台,并包括 Logback 变量的值。

当您运行应用程序时,请确保查看应用程序的日志输出。您应该能够看到 Logback 变量的值以及其他启动期间的日志信息。

另外,如果您只想打印特定的变量,而不是所有变量,您可以自定义一个状态监听器,并重写 addStatusEvent() 方法来控制打印的变量。

请注意,运行时打印的变量值仅在应用程序启动时才可见。如果您希望在应用程序运行时动态访问 Logback 变量的值,您需要编写代码来获取和处理这些值。

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--打印 Logback 变量的值-->
    <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />

    <springProperty scope="context" name="logPath" source="logging.file.path"/>
    <!-- 日志存放路径 -->
	<property name="log.path" value="${logPath}/logs/ruoyi/logs" />
    <!-- 日志输出格式 -->
	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

	<!-- 控制台输出 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
	</appender>

	<!-- 系统日志输出 -->
	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
	    <file>${log.path}/sys-info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
			<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 日志最大的历史 60天 -->
			<maxHistory>60</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
	</appender>

	<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
	    <file>${log.path}/sys-error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 日志最大的历史 60天 -->
			<maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
			<!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
			<!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

	<!-- 用户访问日志输出  -->
    <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.path}/sys-user.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 按天回滚 daily -->
            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>

	<!-- 系统模块日志级别控制  -->
	<logger name="com.ruoyi" level="info" />
	<!-- Spring日志级别控制  -->
	<logger name="org.springframework" level="warn" />

	<root level="info">
		<appender-ref ref="console" />
	</root>

	<!--系统操作日志-->
    <root level="info">
        <appender-ref ref="file_info" />
        <appender-ref ref="file_error" />
    </root>

	<!--系统用户操作日志-->
    <logger name="sys-user" level="info">
        <appender-ref ref="sys-user"/>
    </logger>
</configuration>

参考资料

Spring boot 配置多环境的logback_logback多环境配置_哲学是个什么东东的博客-CSDN博客

相关推荐
这儿有个昵称18 分钟前
Java面试场景:从音视频到微服务的技术深挖
java·spring boot·spring cloud·微服务·面试·kafka·音视频
@zulnger32 分钟前
Django 模型
后端·python·django
曹轲恒1 小时前
SpringBoot的热部署
java·spring boot·后端
bing.shao1 小时前
Golang 在OPC领域的应用
开发语言·后端·golang
程序员侠客行1 小时前
Mybatis插件原理及分页插件
java·后端·架构·mybatis
Mcband1 小时前
Spring Boot 整合 ShedLock 处理定时任务重复执行的问题
java·spring boot·后端
guslegend1 小时前
第3章:热部署 Dev-tool
spring boot
无名-CODING1 小时前
Spring Bean生命周期详解:从入门到精通
java·后端·spring
汝生淮南吾在北1 小时前
SpringBoot3+Vue3个人健康管理网站
vue.js·spring boot·毕业设计·毕设
源代码•宸1 小时前
大厂技术岗面试之一面(准备自我介绍、反问)
经验分享·后端·算法·面试·职场和发展·golang·反问