一篇文章带你学会 LoggerFactory.getLogger 的使用
程序员文章站
2024-03-23 08:31:16
...
本文是在 SpringBoot 中使用,建立时选择了 web 功能,所以不用额外导入slf4j-api 依赖
一、源码分析
public class Test {
// 使用指定类初始化日志对象
private static final Logger log = LoggerFactory.getLogger(Test.class);
}
LoggerFactory.getLogger
可以在 IDEA 控制台打印日志,便于开发,一般加在最上面
进入 getLogger
:
可以发现这里返回来了一个以 name 命名的静态绑定的实例
继续进入 getILoggerFactory()
查看具体的返回:
public static ILoggerFactory getILoggerFactory() {
if (INITIALIZATION_STATE == 0) {
Class var0 = LoggerFactory.class;
synchronized(LoggerFactory.class) {
if (INITIALIZATION_STATE == 0) {
INITIALIZATION_STATE = 1;
performInitialization();
}
}
}
switch(INITIALIZATION_STATE) {
case 1:
return SUBST_FACTORY;
case 2:
throw new IllegalStateException("org.slf4j.LoggerFactory in failed state. Original exception was thrown EARLIER. See also http://www.slf4j.org/codes.html#unsuccessfulInit");
case 3:
return StaticLoggerBinder.getSingleton().getLoggerFactory();
case 4:
return NOP_FALLBACK_FACTORY;
default:
throw new IllegalStateException("Unreachable code");
}
}
发现这里根据相应的参数返回相应的日志信息
二、示例演示
public class Test {
private static final Logger log = LoggerFactory.getLogger(Test.class);
public static void main(String[] args) {
File file = new File("D:\\flv\\GAN.pdf");
log.info("[文件名称] - [{}]", file.getName());
log.info("[文件路径] - [{}]", file.getAbsolutePath());
try {
int i = 10/0;
} catch (Exception e) {
log.info(e.getMessage());
}
}
}
slf4j 目前提供了 trace, debug, info, warn, error 5 种level
注意:
在打印日志的时候,不要使用字符串拼接,要习惯使用占位符
对于占位符的形式而言,只有在我们需要的时候才会提取字符串,这样就会避免创建string对象的时候消耗大量的资源
因为string
对象是不可变的,所以会消耗大量的堆内存,一旦我们用了字符串拼接,就有大量的字符串占用机器的内存,但是当我们用占位符的时候,只有在用到的时候才会动态的创建
上一篇: 中介者模式(mediator)(C++)
下一篇: linux下安装wordPress