一、引言
Logback 是一个优秀的开源日志框架,我们很多项目都使用它来记录日志。实际使用时,通常仅需要一行语句即可记录相应的日志信息,如
logger.info("Hello world.");
那么,看似简单的语句背后都有哪些故事,打印日志时 Logback 内部都做了些什么?
本文以输出日志内容到文件为例,阐述 Logback 打印日志的工作流程。
二、Logback 设计
想要了解 Logback 打印日志的工作原理,首先需要清楚 Logback 所涉及的一些重要概念。
LoggingEvent
LoggingEvent 表示日志事件的概念,其中包括了所有与打印日志请求相关的参数,如当前请求线程、当前时间、消息内容、请求级别等。整个日志打印流程都围绕这个类来展开。
Logger
Logger 意为日志记录器,是打印日志的入口,打印日志时要先获取一个 Logger对象。每个 Logger 对象都有一个名字,且名字遵循层次化的命名规则。如
名为 “com.foo” 的 logger 是名为 “com.foo.Bar” 的 logger的父级。root logger 位于 logger 层级的最顶端,是所有 logger 的祖先。