SpringBoot笔记(六)日志

xiaoxiao2021-02-28  23

SpringBoot默认使用Logback作为日志记录。

同时也对java.util包的logging和Log4j2做了默认配置

默认配置

Spring Boot默认使用Logback来记录日志,并用INFO级别输出到控制台

默认输出元素: - 时间日期:精确到毫秒 - 日志级别: - ERROR - WARN - INFO(默认) - DEBUG - TRACE - 进程ID - 分隔符:— 标识实际日志的开始 - 线程名:方括号括起来(可能会截断控制台输出) - Logger名:通常使用源代码的类名 - 日志内容

2018-04-13 17:26:40.392 INFO 10016 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext

这个依赖默认包含了以下3项

<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-to-slf4j</artifactId> <version>2.10.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId> <version>1.7.25</version> <scope>compile</scope> </dependency>

使用日志

到现在,我突然发现其实有很多依赖都重复了,他们会自带相关的其他依赖,但是为了保证完整性,还是加上吧,反正maven会控制

添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> 日志级别

日志级别是从高到底的,低于设置级别默认都不会显示,就像默认是INFO,所以看不到TRACE和DEBUG级别的,上线之后可以设置的高一些,可以忽略调低级别的,避免日志文件过大

TRACE < DEBUG < INFO < WARN < ERROR < FATAL

在Spring Boot中默认配置ERROR、WARN和INFO级别的日志输出到控制台,也就是不需要配置,就可以在开发过程中可以直接看到的,不过开发的时候建议开启DEBUG模式来获取更详细的信息。

文件输出

以上只是在开发过程中将文件输出在控制台的,上生产后,一般是要形成文件进行保存的

简单的可以直接在配置文件中设置,也支持自定义

logging: pattern: # 只输出日期和内容 console: "%d - %msg%n" # 输出路径,默认文件名为spring.log path: C:\Users\Administrator\Desktop # 指定文件名 1. 全路径 2. 相对路径以当前路径为basePath 3. file优先级大于path,如果同时使用会覆盖path file: C:\Users\Administrator\Desktop\start.log # 日志级别 level: warn

自定义日志配置

Logback

logback-spring.xmllogback.xml

Log4j

log4j-spring.propertieslog4j-spring.xmllog4j.propertieslog4j.xmlLog4j2 log4j2-spring.xmllog4j2.xml

有没有注意到,既可以带spring,也可以不带,Spring Boot官方推荐优先使用带有-spring的文件名作为你的日志配置, 不带也可以用,但是不会为其添加一些spring boot特有的配置项

如果希望完全自己配置,可以考虑直接命令,如logback.xml

放在resources下,springboot会自动去识别

如果不想用默认的命令,也可以通过配置文件改名logging.config=classpath:myLogConfig.xml

应用

application.yml

spring: thymeleaf: cache: false # mode: HTML5 # encoding: UTF-8 # content-type: text/html # 不知道为什么,弃用了,然而默认值就是text/html,就算了吧 # prefix: classpath:/templates/ freemarker: cache: false template-loader-path: classpath:/templates/ftl/ groovy: template.cache: false # 加颜色 output.ansi.enabled: DETECT logging: pattern: # # 只输出日期和内容 # console: "%d - %msg%n" # 输出路径,默认文件名为spring.log # path: C:\Users\Administrator\Desktop # 指定文件名 1. 全路径 2. 相对路径以当前路径为basePath 3. file优先级大于path,如果同时使用会覆盖path file: C:\Users\Administrator\Desktop\start.log

java

@Controller @RequestMapping("/start") public class StartController { private Logger logger = LoggerFactory.getLogger(this.getClass()); // thymeleaf @GetMapping("/thymeleaf") public ModelAndView helloThymeLeaf(ModelAndView model) { // templates下的文件名 model.setViewName("hello"); // 添加内容 model.addObject("name", "ThymeLeaf"); logger.warn(model.getViewName()); return model; } }

转载请注明原文地址: https://www.6miu.com/read-2050160.html

最新回复(0)