1、日志框架
SpringBoot默认
日志的抽象层: SLF4j
日志实现: Logback
2、SLF4j使用
日志记录方法的调用日志抽象层里面的方法,给系统里面导入slf4j的jar和 logback的实现jar
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
3、SpringBoot日志关系:
(1) SpringBoot底层也是使用slf4j+logback的方式进行日志记录
(2) SpringBoot也把其他的日志都替换成了slf4j
(3) SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉即可
4、日志使用;
4.1 默认配置
//记录器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
/*日志的级别:(由低到高)trace<debug<info<warn<error*/
logger.trace("trace日志...");
logger.debug("debug日志...");
/*默认是info级别的,没有指定级别的就用默认规定的级别,root级别*/
logger.info("info日志...");
logger.warn("warn日志...");
logger.error("error日志...");
}
日志输出格式:
%d表示日期时间,
%thread表示线程名,
%-5level:级别从左显示5个字符宽度
%logger{50} 表示logger名字最长50个字符,否则按照句点分割。
%msg:日志消息,
%n是换行符
修改日志的默认配置
logging.level.com.atguigu=trace
# 不指定路径在当前项目下生成springboot.log日志
#logging.path=""
# 可以指定完整的路径
#logging.file=G:/springboot.log
# 在当前磁盘的根路径下创建spring文件夹和里面的log文件夹,使用 spring.log 作为默认文件
logging.path=/spring/log
logging.file | logging.path | Example | Description |
---|---|---|---|
(none) | (none) | 只在控制台输出 | |
指定文件名 | (none) | my.log | 输出日志到my.log文件 |
(none) | 指定目录 | /var/log | 输出到指定目录的 spring.log 文件中 |
4.2 指定配置
给类路径下放上每个日志框架自己的配置文件即可;
Logging System | Customization |
---|---|
Logback | logback-spring.xml , logback-spring.groovy , logback.xml ,logback.groovy |
Log4j2 | log4j2-spring.xml ,log4j2.xml |
JDK | logging.properties |
logback.xml:直接就被日志框架识别了;
logback-spring.xml:由SpringBoot解析日志配置,可以使用SpringBoot的高级Profile功能
5、切换日志框架
切换log4j2
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>