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中调用才会生效
来源:oschina
链接:https://my.oschina.net/u/4374544/blog/4696952