《Log4j 2 官方文档》多余性(Additivity)
如果我们希望输出com.foo.Bar
的TRACE等级的日志,而不像影响其他日志的输出。简单的改变日志等级是不能达到我们想要的目的;但是修改也很简单,只要我们添加一个新的Logger定义就可以达到目标。
<Logger name="com.foo.Bar" level="TRACE"/>
<Root level="ERROR"><AppenderRef ref="STDOUT">
</Root>
这个配置达到了我们想要的目标,所有com.foo.Bar
的日志都会被输出,而其他组件的日志仅仅会输出ERROR
等级的日志。
在上面的例子,所有com.foo.Bar
的日志都会被输出到控制台。这是因为为com.foo.Bar
配置的Logger
没有设定任何的Appender
。
请看如下的配置
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/></Console></Appenders><Loggers><Logger name="com.foo.Bar" level="trace"><AppenderRef ref="Console"/></Logger><Root level="error"><AppenderRef ref="Console"/></Root></Loggers>
</Configuration>
将会输出
17:13:01.540 [main] TRACE com.foo.Bar - entry
17:13:01.540 [main] TRACE com.foo.Bar - entry
17:13:01.540 [main] ERROR com.foo.Bar - Did it again!
17:13:01.540 [main] TRACE com.foo.Bar - exit (false)
17:13:01.540 [main] TRACE com.foo.Bar - exit (false)
17:13:01.540 [main] ERROR MyApp - Didn't do it.
注意com.foo.bar
的TRACE
日志被输出了两次。
首先com.foo.Bar
关联的Logger
执行了一次,直接输出到控制台。接下来这个Logger
的父节点,也就是Root Logge
r执行了另一次输出,这是因为日志在com.foo.Bar
已经被输出,所以也会被父自动输出到控制台。这就是多余性,有的时候多余性的确是非常便捷的功能(前面的例子,我们增加了一个Logger
,但是没有设置Appender
,但是却正常工作了),有的时候却不是很方便,因此这个功能在Logger
中是可以通过additivity
的属性进行关闭的(设置成false)。
译者注:
首先Additivity的确不知道该翻译成什么更合适,感觉什么“附加性”“额外性”都不是很合适,最后觉得“多余性”更贴切些,如果有好的建议望指正。
其次这个多余性的特点,个人认为主要是让我们使用
Log4j2
的时候不用为每一个Logger指定Appender
方便配置;当然如果想单独指定Appender
,Log4j2
也是支持的。而且可以设置开关。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/></Console></Appenders><Loggers><Logger name="com.foo.Bar" level="trace" additivity="false"><AppenderRef ref="Console"/></Logger><Root level="error"><AppenderRef ref="Console"/></Root></Loggers>
</Configuration>
上面配置的输出(译者的输出):
16:41:37.116 [main] TRACE com.foo.Bar - Enter
16:41:37.118 [main] ERROR com.foo.Bar - Did it again!
16:41:37.119 [main] TRACE com.foo.Bar - Exit with(false)
16:41:37.119 [main] ERROR com.foo.MyApp - Didn't do it.
一旦一个日志输出到一个Logger
,这个Logger
的additivity
设置为false
,那么这个日志不会再继续向父Logger
进行传递,忽略其他Logger
的additivity
的设置。
原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Log4j 2 官方文档》多余性(Additivity)
- About
- Latest Posts
Tornadojava
添加本文到我的收藏
Related Posts:
- 《Log4j 2 官方文档》Configuring Filters
- 《Log4j 2 官方文档》翻译邀请
- 《Log4j官方文档》 JSON配置
- 《Log4j2官方文档》从Log4j 1.x迁移
- 《Log4j2官方文档》自动加载配置
- 《Spark 官方文档》在Amazon EC2上运行Spark
- 《Spring Data 官方文档》7. 映射
- 《Apache Zookeeper 官方文档》-3 快速指南:使用zookeeper来协调分布式应用
- 《Spring Data 官方文档》Reference Documentation至5.2. Examples Repository
- 《Spring Data 官方文档》4.6 定制Spring Data仓库实现
- 《Apache Zookeeper 官方文档》管理分布式系统就像管理动物园一样
- 《Spring Data 官方文档》5.6 保存, 更新, 以及删除数据行
- 《Apache Velocity用户指南》官方文档
- 《Spark 官方文档》在YARN上运行Spark
- 《Spark 官方文档》监控和工具
《Log4j 2 官方文档》多余性(Additivity)相关推荐
- 《Log4j 2 官方文档》Scripts
Log4j支持符合JSR223的脚本语言使用在它的组件上.任何一种支持符合JSR223标准的语言引擎都可以使用.所有的语言列表可以在JSR223脚本引擎的页面中找到.很多语言被列在这里,例如javaS ...
- Mybatis官方文档及使用简记
Mybatis官方文档及使用简记 数据库建表 入门案例 无mapper类最传统的用法 使用mybatis generator 使用mybatis-generator mybatis-spring整合 ...
- Spring官方文档通读-部分一
Spring 通读官方文档 这部分参考文档涵盖了Spring Framework绝对不可或缺的所有技术. 其中最重要的是Spring Framework的控制反转(IoC)容器.Spring框架的Io ...
- Stable Diffusion攻略集(Stable Diffusion官方文档、kaggle notebook、webui资源帖)
文章目录 第一部分 一. Features:Textual Inversion(文本反转) 1.1 Textual Inversion 简介 1.1.1 摘要 1.1.2 算法 1.1.3 模型效果 ...
- kafka官方文档学习笔记2--QuickStart
下载kafka https://www.apache.org/dyn/closer.cgi?path=/kafka/1.0.0/kafka_2.11-1.0.0.tgz 解压安装包 > tar ...
- mybatis 动态 SQL 官方文档
MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空格,还要注意去掉 ...
- mysql 标识符规则_MySQL 标识符到底区分大小写么——官方文档告诉你
最近在阿里云服务器上部署一个自己写的小 demo 时遇到一点问题,查看 Tomcat 日志后定位到问题出现在与数据库服务器交互的地方,执行 SQL 语句时会返回 指定列.指定名 不存在的错误.多方查证 ...
- 【TensorFlow官方文档】MNIST机器学习入门
MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片:它也包含每一张图片对应的标签,告诉我们这个是数字几.比如,下面这四张图片的标签分别是5,0,4,1. 从一个很简单的数学模型开始:训练 ...
- AsyncDisplayKit官方文档个人翻译
迁移老文章到掘金 文档比较老了,不适用最新的2.0 AsyncDisplayKit 官方文档 最近在拆解学习AsyncDisplayKit这个很知名的轮子,发现这个轮子内容还是非常庞大的,想要分解学习 ...
最新文章
- 【IBM Tivoli Identity Manager 学习文档】15 用户管理
- ML之LiRSGDR:基于二种算法(LiR、SGDR)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自性能
- 刚安装完的ubuntu安装谷歌浏览器
- 周六——中国电影博物馆
- 宝塔linux_Linux虚拟机上快速搭建宝塔 部署PHP运行环境
- matlab中的 complete,Complete-collection-of-algorithm
- python入门经典100例-【python】编程语言入门经典100例--3
- catalina.home catalina.base 定义 位子 位置
- grads 相关系数_Grads综合实习报告
- WinInet 错误代码 (12001 - 12156 )
- 【青梅快讯】迅速迭代,Greenplum6为你带来持续惊喜
- 硬盘损坏,怪我咯?3分钟拯救硬盘里的小姐姐!
- 【基于Python的Selenium2自动化测试】04 - 模拟126邮箱的登录
- 使用 Wowza IDE 开发第一个 Wowza 服务器扩展应用 -- 监控直播频道
- 使jira支持reopen率的统计
- 以太坊ETH(windows)配置
- java史上最全面试题(转载于骆昊)
- 详解电容触控芯片与指纹芯片的研发与生产流程
- 文法俱乐部 第三章 动词时态
- css样式表诞生,[css]简明教程 CSS样式表概述