LOGBACK-体系结构

Logger, Appenders and Layouts

-Logger:日志分类和级别

-Appenders:日志输出的目的地

-Layout:日志格式

Logger context

日志上下文,用于创建logger并且将它们组织成一棵层级树。

Logger 命名

大小写敏感,并且遵守层级结构规则。

虽然可以随意命名,但是强烈建议使用当前类全名。

root:日志的顶级,和java.lang.Object类似,名字为org.slf4j.Logger.ROOT_LOGGER_NAME

Logger 级别

ALL, TRACE, DEBUG, INFO, WARN, ERROR, OFF

日志的级别由它自己开始沿着层级结构向上追溯第一个非空的level值。例如

root DEBUG DEBUG
X INFO INFO
X.Y none INFO
X.Y.Z ERROR ERROR

Logger 输出方法

决定了日志输出所要求的级别,仅当该级别>=Logger级别时才能被输出。

日志级别排序

ALL < TRACE < DEBUG < INFO < WARN < ERROR < OFF

Logger 唯一性

LoggerFactory.getLogger 方法将返回同一个logger对象如果logger名字一样。

Appenders & Layouts & Encoder

一个Logger对应对应多个Appender,也就是可以将同一个日志输出到多个不同的目的地。

与Logger级别不一致,一个Logger将输出到由它自己开始沿着层级结构向上追溯的所有Appenders中,除非将additivity标志设置为false。

root A1 not applicable A1 Since the root logger stands at the top of the logger hierarchy, the additivity flag does not apply to it.
x A-x1, A-x2 true A1, A-x1, A-x2 Appenders of "x" and of root.
x.y none true A1, A-x1, A-x2 Appenders of "x" and of root.
x.y.z A-xyz1 true A1, A-x1, A-x2, A-xyz1 Appenders of "x.y.z", "x" and of root.
security A-sec false A-sec No appender accumulation since the additivity flag is set to false. Only appender A-sec will be used.
security.access none true A-sec Only appenders of "security" because the additivity flag in "security" is set to false.

Layout用于控制日志输出格式

Encoder 0.9.19版本之后取代Layout,Layout只负责将日志转化为String,而Encoder 能控制输出的String的字符集

注:Layout & Encoder 只能属于一个 Appender

参数化日志输出

支持占位符{}格式化日志,2个一下的参数采用下列形式传递

logger.debug("The new entry is {}. It replaces {}.", entry, oldEntry);

3个以上的参数需使用数组传递

Object[] paramArray ={newVal, below, above};
logger.debug("Value {} was inserted between {} and {}.", paramArray);

日志输出的流程图

 

 参考资料

http://logback.qos.ch/manual/architecture.html

 

 

 

猜你喜欢

转载自siyuan-zhu.iteye.com/blog/2215713
今日推荐