springboot日志配置

springboot日志配置

springboot 默认集成了 slf4j为日志门面 以logback为日志实现

slf4j 和logback

1.使用logback时无需导入maven坐标
2.可在application.properties中配置日志信息

#导入了别的实现后就不用配置了,配了也会失效
#指定自定义logger对象的日志级别
logging.level.cn.sp=trace
#指定控制台输出日志的格式
logging.pattern.console=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread]==== %msg %n
#指定目录
logging.file.path=D:/logs
#指定文件路径
logging.file.name=springbootlog.log
#指定文件日志格式
logging.pattern.file=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread]==== %msg %n

4.配置logback.xml,也可配置为logback-spring.xml,也能被springboot解析,后面的可配置dev的pro等参数在application.properties中
设置spring.profiles.active=pro

当加入配置文件后,application.properties中配置的日志信息就会失效

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
	<property name="patternDev" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"></property>
	<property name="patternPro" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}XXXX - %msg%n"></property>
	<!-- 定义log文件存放目录 -->
	<property name="log_dir" value="/logs"/>
	
	<!-- 输出到控制台 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<!-- 控制输出流对象 System.out 改为System.err-->
		<target>System.err</target>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!-- 当文件名为logback-spring.xml时,由SpringBoot框架来解析 -->
			<springProfile name="dev">
				<pattern>${patternDev}</pattern>
			</springProfile>
			<springProfile name="pro">
				<pattern>${patternPro}</pattern>
			</springProfile>
			<charset>UTF-8</charset>
		</encoder>
	</appender>
	
	<!-- 自定义logger 对象是否继承rootlogger-->
	<logger level="debug" name="cn.sp" additivity="false">
		<appender-ref ref="console"/>
	</logger>
</configuration>

5.测试
使用slf4j或者log4j2作为日志门面,logback作为日志实现

import org.apache.logging.log4j.LogManager;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class SpringbootLogApplicationTests {
	
	public static final Logger log = LoggerFactory.getLogger(SpringbootLogApplicationTests.class);
	
	@Test
	void contextLoads() {
		log.error("error");
		log.warn("warn");
		log.info("info");
		log.debug("debug");
		log.trace("trace");
		
		//使用log4j2   使用slf4j门面和logback日志实现
		
		org.apache.logging.log4j.Logger logger = LogManager.getLogger(SpringbootLogApplicationTests.class);
		logger.info("log4j2 info");
		
	}

}

使用log4j2作为日志实现

1.导入maven坐标
此时需要排除logback的日志实现

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
			<!-- 排除logback日志实现 -->
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<!-- 导入log4j2 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-log4j2</artifactId>
		</dependency>

2.配置log4j2.xml,详细参考log4j2模块

<?xml version="1.0" encoding="UTF-8"?>

<!-- 框架默认级别为warn   自动加载配置文件的间隔时间,不低于5s,修改配置文件后无需重新发动应用,可以自动加载-->
<configuration status="debug" monitorInterval="5">
	
	<properties>
		<property name="LOG_HOME">D:/logs</property>
	</properties>
	
	<!--先定义所有的appender -->
	<appenders>
		<!--这个输出控制台的配置 -->
		<Console name="Console" target="SYSTEM_ERR">
			<!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
			<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
			<!-- 日志的格式 -->
			<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
		</Console>
		
	</appenders>
	<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
	<loggers>
	
		<root level="trace">
			<!-- <appender-ref ref="Async"/> -->
			<appender-ref ref="Console"/>
		</root>
	</loggers>
</configuration>

3.测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值