LogBack
一、架构
Logger 上下文
任何日志 API 的优势在于它能够禁止某些日志的输出。
命名层次结构 如果一个 logger 的名字加上 . 作为另一个 logger 名字的前缀,那么该 logger 就是另一个 logger 的祖先。如果一个 logger 与另一个 logger 之间没有其他的 logger,那么该 logger 就是另一个 logger 的父级。
每一个 logger 都可以通过它的名字取获取。
// 获取 root logger
Logger rootLogger = LoggerFactory.getLogger(ROOT_LOGGER_NAME);
有效级别
对于一个给定的名称为 L 的logger,它的有效级别为从自身一直回溯到 root logger, 直到找到第一个不为空的层级作为自己的层级。 root logger 有一个默认级别:DEBUG
基本选择规则
如果一条日志的打印级别大于 logger 的有效级别,该日志才可以被打印出来 日志的打印级别为 p, Logger 实例级别为 q, 如果 p >= q, 则该条日志会被输出。
TRANCE < DEBUG < INFO < WARN < ERROR
ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(SetLoggerLevel.class);
// 将 logger 的有效级别设置为 warn
logger.setLevel(Level.WARN);
logger.trace("trance");
logger.info("info");
logger.warn("warn");
logger.error("error");
获取 logger
通过 LoggerFactory.getLogger(); 可以获取到具体的 logger,名字相同则返回的 logger 实例也相同。