8.日志
常见的日志框架:
JUL JCL jboos-logging logback log4j log4j2 slf4j…
日志门面(日志抽象层) | 日志实现 |
---|---|
log4j , JUL(java.util.logging) , log4j2 , logback |
左边选个门面,右边选个实现
日志门面:slf4j
日志实现:logback
Spring Boot:底层是Spring框架,Spring框架默认使用 JCL
而Spring Boot选用 slf4j和logback
如何在系统中使用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");
}
}
每一个日志的实现框架都有自己的配置文件,使用slf4j以后,配置文件还是做成日志实现框架的配置文件
如何让系统中所有的日志都统一到slf4j
1.将系统中的其他日志框架都排除出去
2.用中间包来替换原有的日志框架
3.我们导入slf4j其他的实现
SpringBoot日志关系
SpringBoot使用它来做日志功能
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
底层依赖关系
[外链图片转存失败(img-xYcdWzYd-1568192898747)(C:\Users\Y\Desktop\杂\1568096595522.png)]
总结
1.SpringBoot底层也是使用slf4j + logback的方式进行记录
2.SpringBoot也把其他的日志都替换成了slf4j
3.中间的替换包…
日志使用
1.默认配置
SpringBoot帮我们配置好了日志
使用
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloworldApplicationTests {
//记录器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
//日志的级别:由低到高 trace < debug < info < warn < error
//可以调整输出的日志级别,日志就会从这个级别开始生效
//SpringBoot默认从info级别生效
logger.trace("trace...");
logger.debug("debug...");
logger.info("info...");
logger.warn("warning...");
logger.error("error...");
}
输出
2019-09-10 14:57:13.602 INFO 5644 --- [ main] c.e.h.HelloworldApplicationTests : info...
2019-09-10 14:57:13.602 WARN 5644 --- [ main] c.e.h.HelloworldApplicationTests : warning...
2019-09-10 14:57:13.602 ERROR 5644 --- [ main] c.e.h.HelloworldApplicationTests : error...
2.自定义配置
我们可以在配置文件中调整输出的日志级别
logging.level.com.example=trace
输出
2019-09-10 15:02:51.088 TRACE 18160 --- [ main] c.e.h.HelloworldApplicationTests : trace...
2019-09-10 15:02:51.088 DEBUG 18160 --- [ main] c.e.h.HelloworldApplicationTests : debug...
2019-09-10 15:02:51.088 INFO 18160 --- [ main] c.e.h.HelloworldApplicationTests : info...
2019-09-10 15:02:51.088 WARN 18160 --- [ main] c.e.h.HelloworldApplicationTests : warning...
2019-09-10 15:02:51.088 ERROR 18160 --- [ main] c.e.h.HelloworldApplicationTests : error...
logging.file 和 logging.path 的使用(在配置文件中)
logging.file | logging.path | example | description |
---|---|---|---|
(none) | (none) | 只在控制台输出 | |
指定文件名 | (none) | my.log | 输出日志到 my.log 文件 |
(none) | 指定目录 | /var/log | 输出到指定目录的 spring.log 文件中 |
例子:
配置文件
logging.level.com.example=trace
logging.file=testLog.log
运行后根目录多了个 testLog.log ,其中包含了日志内容(可指定路径)
配置文件
logging.level.com.example=trace
logging.path=/spring/log
运行后在当前磁盘的 spring/log 文件夹下生成了 spring.log 日志文件
注意:logging.file 和 logging.path 冲突,同时只能指定一个,如果同时使用,则以 logging.file 为准!
另外,可以用
logging.pattern.console(控制台)
logging.pattern.file(文件)
来控制控制台和文件中日志的格式
3.切换日志框架
…