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.xmlLog4j
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.logjava
@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; } }