SpringBoot中的日志使用

SpringBoot的默认使用

观察SpringBoot的Maven依赖图

SpringBoot中的日志使用_第1张图片

SpringBoot中的日志使用_第2张图片

SpringBoot中的日志使用_第3张图片

可以看出来,SpringBoot默认使用的日志系统是使用Slf4j作为门户,logback作为日志实现

编写一个测试代码看是否是这样

@SpringBootTest
class SpringbootLogDemoApplicationTests {
	//使用Slf4j来创建LOGGER对象
	public static final Logger LOGGER = LoggerFactory.getLogger(SpringbootLogDemoApplicationTests.class);

	@Test
	public void test01() throws Exception {
		LOGGER.error("error");
		LOGGER.warn("wring");
		LOGGER.info("info");
		LOGGER.debug("debug");
		LOGGER.trace("trace");

        //使用Log4j来获取Logger对象
		org.apache.logging.log4j.Logger logger = LogManager.getLogger(SpringbootLogDemoApplicationTests.class);
		logger.info("log4j info");
	}
}

运行结果如下 

2023-10-22 17:21:16.307 ERROR 8912 --- [ main] com.zmt.SpringbootLogDemoApplicationTests : error

2023-10-22 17:21:16.308 WARN 8912 --- [ main] com.zmt.SpringbootLogDemoApplicationTests : wring

2023-10-22 17:21:16.313 INFO 8912 --- [ main] com.zmt.SpringbootLogDemoApplicationTests : info

2023-10-22 17:21:16.337 INFO 8912 --- [ main] com.zmt.SpringbootLogDemoApplicationTests : log4j info

可以看到输出格式是一样的,说明即使使用Log4j获取的Logger对象打印日志实际上还是logback来实现日志输出。

SpringBoot的日志配置

我们可以在aplication.properties文件中进行简单的配置

#指定自定义Logger对象的输出日志级别
logging.level.com.zmt = debug

#指定控制台输出消息格式
logging.pattern.console=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread] ===== %msg%n
#指定日志文件存放的目录,默认文件名为spring.log
logging.file.path=/logs/springboot/
#指定日志文件消息格式
logging.pattern.file=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread] ===== %msg%n

运行观察控制台和文件

SpringBoot中的日志使用_第4张图片

SpringBoot中的日志使用_第5张图片

但是application.properties的配置并不能满足实际需求,比如文件拆分规则等,我们可以自己添加对应日志框架的配置文件来代替application.properties的日志配置

SpringBoot中的日志使用_第6张图片

接下来添加一个logback.xml文件



    

    
        
        System.err
        
            ${pattern}
        
        
            
            ERROR
            ACCEPT
            DENY
        
    


    
    
        
    

运行测试代码观察控制台输出

SpringBoot中的日志使用_第7张图片

只输出了红色字体的error级别日志。配置文件生效

使用SpringBoot解析日志配置

如果使用SpringBoot解析日志配置我们需要将logback.xml文件修改为logback-spring.xml。因为logback.xml加载过早,无法解析扩展标签。而修改为logback-spring.xml后,可以解析SpringBoot的扩展标签。

在xml文件中添加springProfile标签

  	
        
        System.err
        
            
            
                ${pattern}
            
            
            
                [%-5level] %d{yyyy-MM-dd HH:mm:ss} %M %L [%thread]========= %m%n
            
        
        
            
            ERROR
            ACCEPT
            DENY
        
    

在application.properties添加配置指定环境

#设置为开发环境
spring.profiles.active=dev

运行观察控制台是否是输出“---”

SpringBoot中的日志使用_第8张图片

修改为pro环境后再次运行观察

SpringBoot中的日志使用_第9张图片

可以看到输出格式不同。配置生效

SpringBoot切换日志实现

在pom文件中进行修改

		
			org.springframework.boot
			spring-boot-starter-web
			
        
				
					org.springframework.boot
					spring-boot-starter-logging
				
			
		

  	
		
			org.springframework.boot
			spring-boot-starter-log4j2
		

SpringBoot中的日志使用_第10张图片

运行发现又使用了log4j2的默认配置打印日志输出。

你可能感兴趣的:(spring,boot,java,spring)