《Log4j官方文档》 JSON配置

Log4j不仅能通过XML配置,也能通过JSON配置。如你所知,JSON的格式非常类似于紧凑版XML。每个键代表了插件名称,对应的值是属性。键中可以有子级插件。如下,“ThresholdFilter, Console, PatternLayout”都是插件。Console的值是“STDOUT”,意为日志控制台输出;“ThresholdFilter”的值是被设为调试级。


{ "configuration": { "status": "error", "name": "RoutingTest",
"packages": "org.apache.logging.log4j.test",
"properties": {
"property": { "name": "filename",
"value" : "target/rolling1/rollingtest-$${sd:type}.log" }
},
"ThresholdFilter": { "level": "debug" },
"appenders": {
"Console": { "name": "STDOUT",
"PatternLayout": { "pattern": "%m%n" }
},
"List": { "name": "List",
"ThresholdFilter": { "level": "debug" }
},
"Routing": { "name": "Routing",
"Routes": { "pattern": "$${sd:type}",
"Route": [
{
"RollingFile": {
"name": "Rolling-${sd:type}", "fileName": "${filename}",
"filePattern": "target/rolling1/test1-${sd:type}.%i.log.gz",
"PatternLayout": {"pattern": "%d %p %c{1.} [%t] %m%n"},
"SizeBasedTriggeringPolicy": { "size": "500" }
}
},
{ "AppenderRef": "STDOUT", "key": "Audit"},
{ "AppenderRef": "List", "key": "Service"}
]
}
}
},
"loggers": {
"logger": { "name": "EventLogger", "level": "info", "additivity": "false",
"AppenderRef": { "ref": "Routing" }},
"root": { "level": "error", "AppenderRef": { "ref": "STDOUT" }}
}
}
}

注意,在路径追加器中,“Route”元素被声明为数组,这是可行的,因为每个数组元素都是“Route”。然而,在单纯的追加器和过滤器中就不行了,因为在JSON格式里,每个元素都有不同的名称。只有当追加器和过滤器声明是类型的时候,它们才可以由数组定义。如下展现了通过数组定义了多路logger。

{ “configuration”: { “status”: “debug”, “name”: “RoutingTest”,
“packages”: “org.apache.logging.log4j.test”,
“properties”: {
“property”: { “name”: “filename”,
“value” : “target/rolling1/rollingtest-$${sd:type}.log” }
},
“ThresholdFilter”: { “level”: “debug” },
“appenders”: {
“appender”: [
{ “type”: “Console”, “name”: “STDOUT”, “PatternLayout”: { “pattern”: “%m%n” }},
{ “type”: “List”, “name”: “List”, “ThresholdFilter”: { “level”: “debug” }},
{ “type”: “Routing”, “name”: “Routing”,
“Routes”: { “pattern”: “$${sd:type}”,
“Route”: [
{
“RollingFile”: {
“name”: “Rolling-${sd:type}”, “fileName”: “${filename}”,
“filePattern”: “target/rolling1/test1-${sd:type}.%i.log.gz”,
“PatternLayout”: {“pattern”: “%d %p %c{1.} [%t] %m%n”},
“SizeBasedTriggeringPolicy”: { “size”: “500” }
}
},
{ “AppenderRef”: “STDOUT”, “key”: “Audit”},
{ “AppenderRef”: “List”, “key”: “Service”}
]
}
}
]
},
“loggers”: {
“logger”: [
{ “name”: “EventLogger”, “level”: “info”, “additivity”: “false”,
“AppenderRef”: { “ref”: “Routing” }},
{ “name”: “com.foo.bar”, “level”: “error”, “additivity”: “false”,
“AppenderRef”: { “ref”: “Console” }}
],
“root”: { “level”: “error”, “AppenderRef”: { “ref”: “STDOUT” }}
}
}
}

通过Jackson数据处理器来提供JSON文件的解析支持。你需要给项目添加如下依赖:



com.fasterxml.jackson.core
jackson-core
2.8.3



com.fasterxml.jackson.core
jackson-databind
2.8.3



com.fasterxml.jackson.core
jackson-annotations
2.8.3






转载自 并发编程网 - ifeve.com


时间: 2025-01-30 08:36:32

《Log4j官方文档》 JSON配置的相关文章

《Log4j 2 官方文档》多余性(Additivity)

如果我们希望输出com.foo.Bar的TRACE等级的日志,而不像影响其他日志的输出.简单的改变日志等级是不能达到我们想要的目的:但是修改也很简单,只要我们添加一个新的Logger定义就可以达到目标. <Logger name="com.foo.Bar" level="TRACE"/> <Root level="ERROR"> <AppenderRef ref="STDOUT"> <

《Apache Velocity用户指南》官方文档

Quick Start 本项目是 Apache Velocity官方文档的中文翻译版,Velocity类似与JSP,是一种基于Java的模板引擎.它可以在web页面中引用Java代码中定义的数据和对象,而Velocity的作用就是把Web视图和java代码进行组装在一起.本次翻译主要针对对Velocity感兴趣和工作中使用到Velocity的开发人员提供有价值的中文资料,希望能够对大家的工作和学习有所帮助. 由于我也是第一次接触Velocity,还不是很深入,翻译的时候也查看了一些博客以及其他网

jQuery 1.4官方文档详细讲述新特性功能

为了庆祝jQuery的四周岁生日, jQuery的团队荣幸的发布了jQuery Javascript库的最新主要版本! 这个版本包含了大量的编程,测试,和记录文档的工作,我们为此感到很骄傲. 我要以个人的名义感谢 Brandon Aaron, Ben Alman, Louis-Rémi Babe, Ariel Flesler, Paul Irish, Robert Kati?, Yehuda Katz, Dave Methvin, Justin Meyer, Karl Swedberg, and

TestNG官方文档中文版(2)-annotation

TestNG的官方文档的中文翻译版第二章,原文请见 http://testng.org/doc/documentation-main.html 2 - Annotation 这里是TestNG中用到的annotation的快速预览,还有它们的属性. @BeforeSuite: 被注释的方法将在所有测试运行前运行 @AfterSuite: 被注释的方法将在所有测试运行后运行 @BeforeTest: 被注释的方法将在测试运行前运行 @AfterTest: 被注释的方法将在测试运行后运行 @Befo

TestNG官方文档中文版(1)-介绍

最近决定开始使用TestNG来替代junit,作为未来的单元测试基础组件. TestNG的官方文档请见: 1.介绍 TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个 类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服 务器). 编写一个测试的过程有三个典型步骤: * 编写测试的 业务逻辑并在代码中插入TestNG annotation * 将测试信息添加到testng.xml文件或者build.xml中 * 运行TestNG 在欢迎页面

Apache Storm 官方文档中文版

原文链接    译者:魏勇 About 本项目是 Apache Storm 官方文档的中文翻译版,致力于为有实时流计算项目需求和对 Apache Storm 感兴趣的同学提供有价值的中文资料,希望能够对大家的工作和学习有所帮助. 虽然 Storm 的正式推出已经有好几个年头了,发行版也已经到了 0.10.x,但是目前网络上靠谱的学习资料仍然不多,很多比较有价值的资料都过时了(甚至官方网站自己的资料都没有及时更新,这大概也是发展太快的社区的通病),而较新的资料大多比较零碎,在关键内容的描述上也有些

【Docker官方文档】理解Docker

本文讲的是[Docker官方文档]理解Docker,[编者的话]本文来自Docker的官方文档,详细介绍了Docker的体系结构.重要概念.内部工作机理等内容,推荐不了解Docker内部原理的同学阅读. 什么是Docker? Docker是一个用于开发.交付和运行应用的开放平台,Docker设计用来更快的交付你的应用程序.Docker可以将你的应用程序和基础设施层隔离,并且还可以将你的基础设施当作程序一样进行管理.Docker可以帮助你更块地打包你代码.测试以及部署,并且也可以减少从编写代码到部

Docker安全性——官方文档[译]

Docker安全性--官方文档[译] 本文译自Docker官方文档:https://docs.docker.com/articles/security/ 在审查Docker的安全时,需要考虑三个主要方面:◦容器内在的安全性,由内核命名空间和cgroup中实现;◦docker守护程序本身的攻击面;◦加固内核安全特性,以及它们如何与容器中互动. 内核 命名空间 Kernel Namespace Docker容器中非常相似LXC容器,并且它们都具有类似的安全功能.当您以"docker run"

《Redis官方文档》翻译邀请

并发编程网定期组织翻译官方指南,十一月组织翻译Redis官方文档, 官方地址,有兴趣的同学可以通过评论领取,每次领取一节,翻译完后再领取其他章节.如果翻译超过10篇文章,并发网会赠送一本作者签名的<JAVA并发编程的艺术>. 如何交稿?直接在并发网注册账号后点新建文章,参考我要投稿. 介绍 admin.md     (ethfoo领取) benchmarks.md   (looyup已领取) clients.md  (mircle123领取) cluster-spec.md  (carlvin