日志配置logback-spring.xml

springboot配置日志

xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
	
	<!-- 控制台输出 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder charset="UTF-8">	<!-- encoder 可以指定字符集,对于中文输出有意义 -->
			<pattern>
				[%-5level] [%date{yyyy-MM-dd HH:mm:ss}] [%thread] %logger{36} [%line] - %msg%n
			</pattern>
		</encoder>
	</appender>
	
	<!-- 时间滚动输出 level为 DEBUG 日志 -->
	<appender name="file-debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>DEBUG</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY </onMismatch>
		</filter>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>./logs/debug.%d{yyyy-MM-dd}.log</FileNamePattern>
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>
				[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %logger{50} [%line] - %msg%n
			</pattern>
		</encoder>
	</appender>

	<!-- 时间滚动输出 level为 INFO 日志 -->
	<appender name="file-info" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY </onMismatch>
		</filter>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>./logs/info.%d{yyyy-MM-dd}.log</FileNamePattern>
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>
				[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %logger{50} [%line] - %msg%n
			</pattern>
		</encoder>
	</appender>
	
	<!-- 时间滚动输出 level为 WARN 日志 -->
	<appender name="file-warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>WARN</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY </onMismatch>
		</filter>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>./logs/warn.%d{yyyy-MM-dd}.log</FileNamePattern>
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>
				[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %logger{50} [%line] - %msg%n
			</pattern>
		</encoder>
	</appender>

	<!-- 时间滚动输出 level为ERROR 日志 -->
	<appender name="file-error" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY </onMismatch>
		</filter>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>./logs/error.%d{yyyy-MM-dd}.log</FileNamePattern>
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>
				[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %logger{50} [%line] - %msg%n
			</pattern>
		</encoder>
	</appender>

	<!-- 指定项目可输出的最低级别日志 -->
	<root level="error">
		<appender-ref ref="console" />
		<appender-ref ref="file-debug" />
		<appender-ref ref="file-info" />
		<appender-ref ref="file-warn" />
		<appender-ref ref="file-error" />
	</root>
</configuration>

application 配置

logging:
config: classpath:config/logback-spring.xml
level:
root: error

### 配置 logback-spring.xml 实现日志打印 在 Spring Boot 项目中,`logback-spring.xml` 是用于自定义日志配置的核心文件。以下是关于如何正确配置 `logback-spring.xml` 来实现日志打印的具体方法。 #### 日志配置概述 Spring Boot 启动时会优先加载名为 `logback-spring.xml` 的文件作为日志系统的配置文件[^2]。如果没有找到此文件,则会退而求其次寻找 `logback.xml` 文件。由于 `logback-spring.xml` 支持更多高级功能(如 `${}` 占位符解析和基于 profile 的条件化配置),因此推荐使用它来进行日志管理。 #### 使用占位符引入外部属性 可以通过 `${}` 占位符机制,在 `logback-spring.xml` 中引用来自 `application.yml` 或者 `application.properties` 定义的变量。例如: ```xml <!-- application.yml --> logging: path: /var/log/myapp/ <!-- logback-spring.xml --> <configuration> <!--logging.path 属性映射到 log.path --> <property name="LOG_PATH" value="${logging.path}" /> <!-- 设置日志文件名 --> <property name="LOG_FILE_NAME" value="my-application.log" /> <!-- 控制台输出 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 文件输出 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/${LOG_FILE_NAME}</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> </encoder> </appender> <!-- Root logger level --> <root level="info"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root> </configuration> ``` 上述代码片段展示了如何设置控制台和文件两种类型的 appender,并利用滚动策略按日期归档日志文件[^4]。 #### 特殊场景下的优化建议 为了适应更复杂的应用需求,可以进一步扩展配置逻辑: - **多环境适配**:借助 `<springProfile>` 标签实现针对开发、测试或生产环境的不同日志级别与路径设定。 ```xml <springProfile name="dev"> <root level="debug"> <appender-ref ref="CONSOLE"/> </root> </springProfile> <springProfile name="prod"> <root level="warn"> <appender-ref ref="FILE"/> </root> </springProfile> ``` - **权限校验**:确保指定的日志目录存在且应用程序对该目录拥有写入权限。 #### 总结 通过合理设计 `logback-spring.xml` 文件结构以及灵活运用其内置特性,能够显著提升项目的可维护性和运行效率。务必注意实际部署环境中可能存在的差异性因素,比如操作系统类型或者磁盘空间限制等问题的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值