如果我们希望输出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.barTRACE日志被输出了两次。

首先com.foo.Bar关联的Logger执行了一次,直接输出到控制台。接下来这个Logger的父节点,也就是Root Logger执行了另一次输出,这是因为日志在com.foo.Bar已经被输出,所以也会被父自动输出到控制台。这就是多余性,有的时候多余性的确是非常便捷的功能(前面的例子,我们增加了一个Logger,但是没有设置Appender,但是却正常工作了),有的时候却不是很方便,因此这个功能在Logger中是可以通过additivity的属性进行关闭的(设置成false)。

译者注:

首先Additivity的确不知道该翻译成什么更合适,感觉什么“附加性”“额外性”都不是很合适,最后觉得“多余性”更贴切些,如果有好的建议望指正。

其次这个多余性的特点,个人认为主要是让我们使用Log4j2的时候不用为每一个Logger指定Appender方便配置;当然如果想单独指定AppenderLog4j2也是支持的。而且可以设置开关。

<?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,这个Loggeradditivity设置为false,那么这个日志不会再继续向父Logger进行传递,忽略其他Loggeradditivity的设置。

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Log4j 2 官方文档》多余性(Additivity)

0
  • About
  • Latest Posts

Tornadojava

添加本文到我的收藏

Related Posts:

  1. 《Log4j 2 官方文档》Configuring Filters
  2. 《Log4j 2 官方文档》翻译邀请
  3. 《Log4j官方文档》 JSON配置
  4. 《Log4j2官方文档》从Log4j 1.x迁移
  5. 《Log4j2官方文档》自动加载配置
  6. 《Spark 官方文档》在Amazon EC2上运行Spark
  7. 《Spring Data 官方文档》7. 映射
  8. 《Apache Zookeeper 官方文档》-3 快速指南:使用zookeeper来协调分布式应用
  9. 《Spring Data 官方文档》Reference Documentation至5.2. Examples Repository
  10. 《Spring Data 官方文档》4.6 定制Spring Data仓库实现
  11. 《Apache Zookeeper 官方文档》管理分布式系统就像管理动物园一样
  12. 《Spring Data 官方文档》5.6 保存, 更新, 以及删除数据行
  13. 《Apache Velocity用户指南》官方文档
  14. 《Spark 官方文档》在YARN上运行Spark
  15. 《Spark 官方文档》监控和工具
转载自 并发编程网 - ifeve.com

《Log4j 2 官方文档》多余性(Additivity)相关推荐

  1. 《Log4j 2 官方文档》Scripts

    Log4j支持符合JSR223的脚本语言使用在它的组件上.任何一种支持符合JSR223标准的语言引擎都可以使用.所有的语言列表可以在JSR223脚本引擎的页面中找到.很多语言被列在这里,例如javaS ...

  2. Mybatis官方文档及使用简记

    Mybatis官方文档及使用简记 数据库建表 入门案例 无mapper类最传统的用法 使用mybatis generator 使用mybatis-generator mybatis-spring整合 ...

  3. Spring官方文档通读-部分一

    Spring 通读官方文档 这部分参考文档涵盖了Spring Framework绝对不可或缺的所有技术. 其中最重要的是Spring Framework的控制反转(IoC)容器.Spring框架的Io ...

  4. Stable Diffusion攻略集(Stable Diffusion官方文档、kaggle notebook、webui资源帖)

    文章目录 第一部分 一. Features:Textual Inversion(文本反转) 1.1 Textual Inversion 简介 1.1.1 摘要 1.1.2 算法 1.1.3 模型效果 ...

  5. kafka官方文档学习笔记2--QuickStart

    下载kafka https://www.apache.org/dyn/closer.cgi?path=/kafka/1.0.0/kafka_2.11-1.0.0.tgz 解压安装包 > tar ...

  6. mybatis 动态 SQL 官方文档

    MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空格,还要注意去掉 ...

  7. mysql 标识符规则_MySQL 标识符到底区分大小写么——官方文档告诉你

    最近在阿里云服务器上部署一个自己写的小 demo 时遇到一点问题,查看 Tomcat 日志后定位到问题出现在与数据库服务器交互的地方,执行 SQL 语句时会返回 指定列.指定名 不存在的错误.多方查证 ...

  8. 【TensorFlow官方文档】MNIST机器学习入门

    MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片:它也包含每一张图片对应的标签,告诉我们这个是数字几.比如,下面这四张图片的标签分别是5,0,4,1. 从一个很简单的数学模型开始:训练 ...

  9. AsyncDisplayKit官方文档个人翻译

    迁移老文章到掘金 文档比较老了,不适用最新的2.0 AsyncDisplayKit 官方文档 最近在拆解学习AsyncDisplayKit这个很知名的轮子,发现这个轮子内容还是非常庞大的,想要分解学习 ...

最新文章

  1. 【IBM Tivoli Identity Manager 学习文档】15 用户管理
  2. ML之LiRSGDR:基于二种算法(LiR、SGDR)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自性能
  3. 刚安装完的ubuntu安装谷歌浏览器
  4. 周六——中国电影博物馆
  5. 宝塔linux_Linux虚拟机上快速搭建宝塔 部署PHP运行环境
  6. matlab中的 complete,Complete-collection-of-algorithm
  7. python入门经典100例-【python】编程语言入门经典100例--3
  8. catalina.home catalina.base 定义 位子 位置
  9. grads 相关系数_Grads综合实习报告
  10. WinInet 错误代码 (12001 - 12156 )
  11. 【青梅快讯】迅速迭代,Greenplum6为你带来持续惊喜
  12. 硬盘损坏,怪我咯?3分钟拯救硬盘里的小姐姐!
  13. 【基于Python的Selenium2自动化测试】04 - 模拟126邮箱的登录
  14. 使用 Wowza IDE 开发第一个 Wowza 服务器扩展应用 -- 监控直播频道
  15. 使jira支持reopen率的统计
  16. 以太坊ETH(windows)配置
  17. java史上最全面试题(转载于骆昊)
  18. 详解电容触控芯片与指纹芯片的研发与生产流程
  19. 文法俱乐部 第三章 动词时态
  20. css样式表诞生,[css]简明教程 CSS样式表概述

热门文章

  1. 使用css伪元素来实现边框的部分显示
  2. Spring 框架搭建
  3. linux环境配置以后生效,Linux中修改环境变量及生效方法
  4. 过敏性皮肤、春天皮肤过敏、皮肤过敏--皮肤过敏怎么办?
  5. angularjs 关于ui-router分层使用
  6. js 字符串转数值 的常用方法和对比
  7. 网页设计作业学生网页课程设计作业成品DIV+CSS-中国传统文化
  8. 嵌入式为什么没有软件架构师?
  9. SpringBoot 读取项目中静态资源文件
  10. 001:Mapbox GL加载基础的地图