log4j代码端之appenders与layouts含义

 Quotes: http://blog.csdn.net/talentxie/archive/2009/02/08/3868054.aspx

 

     log4j主要包含三个组件,分别对应为:Loggers、appenders与layouts。他们彼此协作,使得程序可以依据不同层次记录日志,在运行时控制这些日志的输出格式以及将这些日志记录到对应的场所。

     在log4j中,一个Logger可以多种方式输出某条日志记录。而每个格式都有一个appender表示,具体的输出方式有:控制台,文件,GUI 组件,远程socket流,JMS等........  一个logger可以映射到多个appender对象上面。框架在实现appender功能时,也实现了继承属性。即在命名层次中,子结点可以继承祖先结 点的appender对应的输出方式。当然子结点也可以选择不继承这种属性,那么对应的子节点logger对象可以调用addAdditivity函数取 消祖先结点遗留下来的appender功能。如下图所示:

 

日志对象名自行添加的appenders功能叠加(additivity)标志输出日志方式注释
rootA1not applicableA1The root logger is anonymous but can be accessed with the Logger.getRootLogger() method. There is no default appender attached to root.
xA-x1, A-x2trueA1, A-x1, A-x2Appenders of "x" and root.
x.ynonetrueA1, A-x1, A-x2Appenders of "x" and root.
x.y.zA-xyz1trueA1, A-x1, A-x2, A-xyz1Appenders in "x.y.z", "x" and root.
securityA-secfalseA-secNo appender accumulation since the additivity flag is set tofalse.
security.accessnonetrueA-secOnly appenders of "security" because the additivity flag in "security" is set to false.

 

       大多数时间,我们在实现输出日志信息时都伴随着日志输出格式的设定。这就需要将layouts关联到某个appender上,layouts的职责便是按 照用户的需求格式化对应的输出信息。在标准log4j版本中使用PatternLayout制定输出格式,有点C中的printf的味道。例如在 PatternLayout中使用"%r [%t] %-5p %c - %m%n"参数会输出下面的内容:176 [main] INFO  org.foo.Bar - Located nearest gas station

其中%r对应为:使用这个系统所消耗的毫秒时间

%t:使用这个log请求对应的线程

%-5p:log语句对应的级别

%c: 对应的对应的使用对象

%m%n: 为最终的用户自己定义的输出内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值