【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博客

相关推荐
金色天际线-1 小时前
Nginx 优化与防盗链配置指南
java·后端·spring
皮皮林5518 小时前
SpringBoot 全局/局部双模式 Gzip 压缩实战:14MB GeoJSON 秒变 3MB
java·spring boot
weixin_456904278 小时前
Spring Boot 用户管理系统
java·spring boot·后端
奔跑吧邓邓子8 小时前
【Java实战㉞】从0到1:Spring Boot Web开发与接口设计实战
java·spring boot·实战·web开发·接口设计
茶本无香9 小时前
深入理解Spring Boot的EnvironmentPostProcessor:环境处理的黑科技
spring boot
奔跑吧邓邓子9 小时前
【Java实战㉝】Spring Boot实战:从入门到自动配置的进阶之路
java·spring boot·实战·自动配置
ONLYOFFICE9 小时前
【技术教程】如何将ONLYOFFICE文档集成到使用Spring Boot框架编写的Java Web应用程序中
java·spring boot·编辑器
cyforkk9 小时前
Spring 异常处理器:从混乱到有序,优雅处理所有异常
java·后端·spring·mvc
程序员爱钓鱼9 小时前
Go语言实战案例-开发一个Markdown转HTML工具
前端·后端·go