Slf4j LoggerFactory
大约 1 分钟
LoggerFactory 是来自于 SLF4J (Simple Logging Facade for Java) 的工厂类,用来创建 Logger 实例。
常用方法
- LoggerFactory.getLogger(Class<?> clazz):获取一个与指定类相关联的 Logger 实例。
- LoggerFactory.getLogger(String name):获取一个与指定名称相关联的 Logger 实例。
通常我们会在配置文件中通过 logger 去声明一些需要特俗处理的日志记录器,这些日志记录器可以通过 LoggerFactory.getLogger(String name) 直接获取。
LoggerFactory#getLogger()
两个不同传参的 getLogger 方法其本质一样的,LoggerFactory.getLogger(Class<?> clazz) 内部调用的还是 LoggerFactory.getLogger(String name),只不过传入的参数是当前类的名称。
在 logback 日志框架中,首先会使用 root 名称匹配,如果匹配则直接返回 root 日志记录器。然后再从缓存中获取 logger,如果缓存中没有,则在 root 下新建一个子日志记录器返回,并添加到缓存中。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyClass {
// 获取 Logger 对象,通常传入当前类的 Class 对象
private static final Logger logger = LoggerFactory.getLogger(MyClass.class);
public static void main(String[] args) {
// 记录不同级别的日志
logger.info("This is an INFO log message.");
logger.debug("This is a DEBUG log message.");
logger.error("This is an ERROR log message.");
try {
int result = 10 / 0; // 这里会抛出 ArithmeticException
} catch (ArithmeticException e) {
// 捕获异常并记录错误日志
logger.error("Exception occurred: ", e);
}
}
}
使用 SLF4J 时,你可以将其与 logback、log4j 或其他日志框架结合使用,选择合适的日志输出策略。
LoggerFactory 本身不直接负责输出日志,它只是作为一个统一的日志 API,允许你切换底层的日志框架(如 logback、log4j)。