logback 結構

基本結構

目前(1.7),logback有3個模塊logback-core, logback-classic 和 logback-access.

 logback-core是另外兩個模塊的基礎。logback-classic扩展了核心模塊,经典模块對log4j進行類显著改进並自身實現類slf4j-api。称为访问的第三个模块,集成了Servlet容器以提供HTTP访问日志功能。

Logger

确保所有的日誌記錄最终会有继承层次,root logger总是有一个指定的級別。默认情况下,这个级别是debug。任何logger都會繼承root logger。

Example 1
Logger nameAssigned levelEffective level
rootDEBUGDEBUG
XnoneDEBUG
X.YnoneDEBUG
X.Y.ZnoneDEBUG

Example 2

Logger nameAssigned levelEffective level
rootERRORERROR
XINFOINFO
X.YDEBUGDEBUG
X.Y.ZWARNWARN

Example 3

Logger nameAssigned levelEffective level
rootDEBUGDEBUG
XINFOINFO
X.YnoneINFO
X.Y.ZERRORERROR

Example 4

Logger nameAssigned levelEffective level
rootDEBUGDEBUG
XINFOINFO
X.YnoneINFO
X.Y.ZnoneINFO



級別順序

TRACE < DEBUG < INFO <  WARN < ERROR

level of 
request p
effective level q
TRACE DEBUG INFO WARN ERROR OFF
TRACEYESNONONONONO
DEBUGYESYESNONONONO
INFOYESYESYESNONONO
WARNYESYESYESYESNONO
ERRORYESYESYESYESYESNO

Appenders 和 Layouts

addAppender方法添加一个appender到给定的logger。

Logger NameAttached AppendersAdditivity FlagOutput TargetsComment
rootA1not applicableA1Since the root logger stands at the top of the logger hierarchy, the additivity flag does not apply to it.
xA-x1, A-x2trueA1, A-x1, A-x2Appenders of "x" and of root.
x.ynonetrueA1, A-x1, A-x2Appenders of "x" and of root.
x.y.zA-xyz1trueA1, A-x1, A-x2, A-xyz1Appenders of "x.y.z", "x" and of root.
securityA-sec falseA-secNo appender accumulation since the additivity flag is set to false. Only appender A-sec will be used.
security.accessnonetrueA-secOnly appenders of "security" because the additivity flag in "security" is set to false.

通常,用户不仅希望定制输出目的地,而且希望定制输出格式。

For example, the PatternLayout with the conversion pattern "%-4relative [%thread] %-5level %logger{32} - %msg%n" will output something akin to:

例如,PatternLayout爲"%-4relative [%thread] %-5level %logger{32} - %msg%n"時,將會輸出類似信息:

176  [main] DEBUG manual.architecture.HelloWorld2 - Hello world.

第一个字段是程序運行以来经过的毫秒数。第二个是發起日志请求的线程。第三个字段是日志请求的级别。第四個与日誌请求相關的logger的名字。“-”后是請求的文本消息。


參數化

logger.debug("The new entry is "+entry+".");
logger.debug("The new entry is {}.", entry);
logger.debug("The new entry is {}. It replaces {}.", entry, oldEntry);
後面兩個比第一個更高效。


內部調用

这是一个UML序列图,以info()爲例来显示其內部調用情況。

性能

暫缺

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值