《Log4j官方文档》 JSON配置
  TEZNKK3IfmPf 2023年11月15日 32 0

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-$.log" }
},
"ThresholdFilter": { "level": "debug" },
"appenders": {
"Console": { "name": "STDOUT",
"PatternLayout": { "pattern": "%m%n" }
},
"List": { "name": "List",
"ThresholdFilter": { "level": "debug" }
},
"Routing": { "name": "Routing",
"Routes": { "pattern": "$",
"Route": [
{
"RollingFile": {
"name": "Rolling-", "fileName": "",
"filePattern": "target/rolling1/test1-.%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-$.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”: “$”,
“Route”: [
{
“RollingFile”: {
“name”: “Rolling-”, “fileName”: “”,
“filePattern”: “target/rolling1/test1-.%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


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月15日   20   0   0 http协议
  TEZNKK3IfmPf   2023年11月15日   22   0   0 多线程同步
  TEZNKK3IfmPf   2023年11月15日   12   0   0 http协议
  TEZNKK3IfmPf   2023年11月15日   14   0   0 多线程同步
  TEZNKK3IfmPf   2023年11月15日   13   0   0 多线程同步
  TEZNKK3IfmPf   2023年11月15日   18   0   0 http协议
TEZNKK3IfmPf