log4j2中文手册(2)

2019-04-13 18:06

如果一个 root LoggerConfig没有配置日志级别,将分配一个默认级别。 Logger Name root X X.Y X.Y.Z Assigned LoggerConfig root root root root LoggerConfig Level DEBUG DEBUG DEBUG Logger Level DEBUG DEBUG DEBUG Example 1 在 Example1中, 仅配置了root logger与其日志级别,所有的Loggers都会引用 root LoggerConfig ,并使用其日志级别。 Logger Name root X X.Y X.Y.Z Assigned LoggerConfig root X X.Y X.Y.Z LoggerConfig Level DEBUG ERROR INFO WARN Example 2 在Example2中, 每个Logger 都有其对应的LoggerConfig 和相应的日志级别。

Level DEBUG ERROR INFO WARN Logger Name root X X.Y X.Y.Z Assigned LoggerConfig root X X X.Y.Z LoggerConfig Level DEBUG ERROR ERROR WARN Level DEBUG ERROR ERROR WARN Example 3 在 Example3中,Loggerroot, X 和X.Y.Z 都有与名称完全匹配的LoggerConfig 配置,而 LoggerX.Y没有与其命名匹配的 LoggerConfig ,所以使用拥有最长匹配度的 X的LoggerConfig 。 Logger Name root X X.Y X.Y.Z Assigned LoggerConfig root X X X LoggerConfig Level DEBUG ERROR ERROR ERROR Example 4 Example 4中,root 与X各自有一个与名称完全匹配的LoggerConfig ,而X.Y 与X.Y.Z没有与名称完全匹配的LoggerConfig ,所以使用与其名称有最长匹配度的X 的LoggerConfig 。 Logger Name root X Assigned LoggerConfig root X LoggerConfig Level DEBUG ERROR level level DEBUG ERROR ERROR ERROR DEBUG ERROR X.Y X.YZ X.Y X INFO ERROR Example 5 INFO ERROR Example 5中root.X, 与X.Y 有与名字完全匹配的LoggerConfig ,而 X.YZ 将与X 相匹配而不是X.Y,因为路径匹配时按照 .进行分割和匹配的。 Logger Name root X X.Y X.Y.Z Assigned LoggerConfig root X X.Y X.Y LoggerConfig Level DEBUG ERROR Example 6 Example 6中,X.Y 与X.Y.Z都没有配置相应的日志级别,所以他们从 Logger X中继承了日志级别。

下面的表格展示了logEvent(垂直方向)与 LoggerConfig(水平方向)的过滤方式:

Level DEBUG ERROR ERROR ERROR Event Level ALL TRACE DEBUG INFO WARN ERROR FATAL OFF 7. Filter

TRACE YES YES YES YES YES YES YES NO DEBUG YES NO YES YES YES YES YES NO LoggerConfig Level INFO YES NO NO YES YES YES YES NO WARN YES NO NO NO YES YES YES NO ERROR YES NO NO NO NO YES YES NO FATAL YES NO NO NO NO NO YES NO OFF NO NO NO NO NO NO NO NO Log4j2提供了 Filters, 可以 应用于 控制权传递到 LoggerConfig之前,控制权传递到LoggerConfig之后 但是在调用 Appenders之前,控制权在传递到 LoggerConfig之后,但是在调用一个指定的 Appender 之前。类似于防火墙的处理方式,每个Filters可以返回三个结果的其中之一。 Accept, Deny Neutral 。 Accept意味着不会再调用其他Filters 了,LogEvent 将被执行。

Deny 意味着立即忽略这个LogEvent,并将这个LogEvent 的控制权交还给它调用者。

Neutral 指LogEvent将传递给其他Filters ,如果没有别的Filters 了,那么这个LogEvent将被执行。

尽管一个LogEvent 可能被一个Filter接收,但是这个LogEvent仍然没有被日志记录下来,发生这种情况的场景可能是LogEvent被pre-LoggerConfig Filter接收了,但是却被LoggerConfig拒绝了,或者被所有的Appenders拒绝

了。

8. Appender

由logger的不同来决定一个logging request是被禁用还是启用只是log4j2的情景之一。log4j2还允许将logging request中log信息打印到不同的目的地中。在log4j2的世界里,不同的输出位置被称为Appender。目前,Appender可以是console、文件、远程socket服务器、Apache Flume、JMS以及远程 UNIX 系统日志守护进程,数据库。一个Logger可以绑定多个不同的Appender。

可以通过调用当前Configuration的addLoggerAppender 方法为Logger增加一个Appender 。如果不存在一个与Logger名称相对应的LoggerConfig,那么相应的LoggerConfig将被创建,并且新增加的Appender将被添加到此新建的LoggerConfig中。然后,所有的Loggers将会被通知更新自己的LoggerConfig引用(PS:一个Logger的LoggerConfig引用是根据名称的匹配长度来决定的,当新的LoggerConfig被创建后,会引发一轮配对洗牌)。

某个logger 中被启用的 logging request 将被转发到该LoggerLoggerConfig 相关联的的所有Appenders上,并且还会被转发到LoggerConfig的父级的Appenders上。

换句话说,Appenders将从LoggerConfig的层次结构中获得继承。

例如,对LoggerConfig B来说,它的父级为A,A的父级为root。如果在root中定义了一个Appender为console,那么所有启用了的logging request都会在console中打印出来。另外,如果LoggerConfig A定义了一个文件作为Appender,那么使用LoggerConfig A和LoggerConfig B的logger 的logging request都会在该文件中打印,并且同时在console中打印。

如果想避免这种遗传效应的话,可以在configuration文件中做如下设置:additivity=\


log4j2中文手册(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:广场排水方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: