修复日志路径读取 application.yml 配置
This commit is contained in:
71
ruoyi-admin/src/main/resources/logback-spring.xml
Normal file
71
ruoyi-admin/src/main/resources/logback-spring.xml
Normal file
@@ -0,0 +1,71 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<!-- 直接从 application.yml 的 logging.file.path 读取日志目录 -->
|
||||
<springProperty scope="context" name="log.path" source="logging.file.path" defaultValue="/home/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>
|
||||
<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>
|
||||
<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">
|
||||
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<maxHistory>60</maxHistory>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>${log.pattern}</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<logger name="com.ruoyi" level="info" />
|
||||
<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>
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.ruoyi.config;
|
||||
|
||||
import ch.qos.logback.classic.Logger;
|
||||
import ch.qos.logback.classic.LoggerContext;
|
||||
import ch.qos.logback.core.rolling.RollingFileAppender;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.boot.logging.LogFile;
|
||||
import org.springframework.boot.logging.LoggingInitializationContext;
|
||||
import org.springframework.boot.logging.logback.LogbackLoggingSystem;
|
||||
import org.springframework.core.env.MapPropertySource;
|
||||
import org.springframework.core.env.StandardEnvironment;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class LogbackConfigurationTest {
|
||||
|
||||
@Test
|
||||
void shouldUseLogPathFromApplicationConfiguration() {
|
||||
StandardEnvironment environment = new StandardEnvironment();
|
||||
environment.getPropertySources().addFirst(new MapPropertySource("test", Map.of(
|
||||
"logging.file.path", "/tmp/ccdi-logback-test"
|
||||
)));
|
||||
|
||||
LogbackLoggingSystem loggingSystem = new LogbackLoggingSystem(getClass().getClassLoader());
|
||||
try {
|
||||
loggingSystem.beforeInitialize();
|
||||
loggingSystem.initialize(
|
||||
new LoggingInitializationContext(environment),
|
||||
"classpath:logback-spring.xml",
|
||||
LogFile.get(environment)
|
||||
);
|
||||
|
||||
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
|
||||
Logger rootLogger = context.getLogger(Logger.ROOT_LOGGER_NAME);
|
||||
RollingFileAppender<?> infoAppender = (RollingFileAppender<?>) rootLogger.getAppender("file_info");
|
||||
RollingFileAppender<?> errorAppender = (RollingFileAppender<?>) rootLogger.getAppender("file_error");
|
||||
RollingFileAppender<?> userAppender = (RollingFileAppender<?>) context.getLogger("sys-user").getAppender("sys-user");
|
||||
|
||||
assertThat(infoAppender.getFile()).isEqualTo("/tmp/ccdi-logback-test/sys-info.log");
|
||||
assertThat(errorAppender.getFile()).isEqualTo("/tmp/ccdi-logback-test/sys-error.log");
|
||||
assertThat(userAppender.getFile()).isEqualTo("/tmp/ccdi-logback-test/sys-user.log");
|
||||
} finally {
|
||||
loggingSystem.cleanUp();
|
||||
((LoggerContext) LoggerFactory.getILoggerFactory()).reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
4
ruoyi-admin/src/test/resources/logback-test.xml
Normal file
4
ruoyi-admin/src/test/resources/logback-test.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<root level="OFF" />
|
||||
</configuration>
|
||||
Reference in New Issue
Block a user