Log4j2.XML属性简介

白昼怎懂夜的黑 提交于 2020-10-31 18:59:09

XML基本结构

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Properties>
    <Property name="name1">value</property>
    <Property name="name2" value="value2"/>
  </Properties>
  <Filter type="type" ... />
  <Appenders>
    <Appender type="type" name="name">
      <Filter type="type" ... />
    </Appender>
    ...
  </Appenders>
  <Loggers>
    <Logger name="name1">
      <Filter type="type" ... />
    </Logger>
    ...
    <Root level="level">
      <AppenderRef ref="name"/>
    </Root>
  </Loggers>
</Configuration>

Configuration中的属性

属性名称 描述
advertiser (可选)广告客户插件名称,将用于公布单个FileAppender或SocketAppender配置。唯一提供的广告客户插件是“multicastdns”。
dest “err”表示stderr,“out”表示stdout,这是一个文件路径或URL。
monitorInterval 检查文件配置是否有更改之前必须经过的最短时间(秒)。
name 配置的名称。
packages 以逗号分隔的包名列表,用于搜索插件。每个类加载器只加载一次插件,因此更改此值可能不会对重新配置产生任何影响。
schema 标识类加载器定位用于验证配置的XML架构的位置。仅当strict设置为true时有效。如果未设置,则不会进行架构验证。
shutdownHook 指定JVM关闭时Log4j是否应自动关闭。关闭钩子在默认情况下是启用的,但是可以通过将该属性设置为“disable”来禁用
shutdownTimeout 指定JVM关闭时,附加程序和后台任务将关闭多少毫秒。默认值为零,这意味着每个appender都使用其默认超时,并且不等待后台任务。
status 应记录到控制台的内部Log4j事件的级别。此属性的有效值为“trace”、“debug”、“info”、“warn”、“error”和“fatal”。
strict 允许使用严格的XML格式。JSON配置中不支持。
verbose 加载插件时启用诊断信息。

 

Properties

Log4j 2支持在配置中指定标记以引用其他位置定义的属性的功能。当解释配置文件时,其中一些属性将被解析,而其他属性可能会传递到组件,在运行时将对其进行评估(等同于自定义属性)。

Log4j内置的上下文是:

字首 语境
base64 Base64编码数据。格式为 ${base64:base64_encoded_data}。例如:${base64:SGVsbG8gV29ybGQhCg==} 生成 Hello World!。
bundle 资源包。格式是 ${bundle:BundleName:BundleKey}。捆绑包名称遵循包命名约定,例如:${bundle:com.domain.Messages:MyKey}。
ctx 线程上下文映射(MDC)
date 使用指定格式插入当前日期和/或时间
env 系统环境变量。格式是 ${env:ENV_NAME} 以及 ${env:ENV_NAME:-default_value}。
jndi 默认JNDI上下文中设置的值。
jvmrunargs 通过JMX访问的JVM输入参数,但不是主参数;请参阅 RuntimeMXBean.getInputArguments(). 在Android上不可用。
log4j Log4j配置属性。表达式 ${log4j:configLocation} 和 ${log4j:configParentLocation} 分别提供到log4j配置文件及其父文件夹的绝对路径。
main 值设置为 MapLookup.setMainArguments(String[])
map MapMessage 中的值
sd 结构化数据消息中的值。键“id”将返回没有企业号的structuredDaitaid的名称。键“type”将返回消息类型。其他键将从映射中检索单个元素。
sys 系统属性。格式是 ${sys:some.property} 以及 ${sys:some.property:-default_value}。

 

Appenders

Appender负责将LogEvents传递到其目的地。Appender始终有一个名称,以便可以从Loggers中引用它们。

(后面会出单独的文章)

将日志写到ApacheCassandra数据库

将日志输出到控制台

当配置次要的Appenders

多个程序日志输出到同一文件

集中日志(收集,聚合大量日志数据并将其从许多不同的源移动到集中式数据存储中)

使用标准JDBC将日志事件写入关系数据库表

将格式化的日志事件发送到JMS目标

将日志事件写入关系数据库表

通过HTTP发送日志事件

将事件记录到ApacheKafka主题

将日志事件写入NoSQL数据库

发送电子邮件

将其输出写入由主机和端口指定的远程目标

输出以符合BSD Syslog格式

使用JeroMQ将日志事件发送到一个或多个ZeroMQ端点

Loggers

配置后的Appenders需要在Loggers中调用才会生效

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!