Appenders是什么
官方文档说“Appenders are responsible for delivering LogEvents to their destination.”也就是说,Appenders负责将日志事件投递到它们的目的地。这个目的地可以是控制台,文件,数据库,甚至是邮件。Appender通常会将日志信息的排版委托给layout(layout将在下一篇博客详细讲解)。
Appender分类
名称 | 描述 |
---|---|
AsyncAppender | 使用一个单独线程记录日志,实现异步处理日志事件。 |
CassandraAppender | 将日志信息输出到一个Apache的Cassandra数据库 |
ConsoleAppender | 将日志信息输出到控制台 |
FailoverAppender | 包含其他appenders,按顺序尝试,直至成功或结尾 |
FileAppender | 一个OutputStreamAppender,将日志输出到文件 |
FlumeAppender | 将日志输出到Apache Flume系统 |
JDBCAppender | 将日志通过JDBC输出到关系型数据库 |
JMS Appender | 将日志输出到JMS(Java Message Service) |
JPAAppender | 将日志输出到JPA框架 |
HttpAppender | 通过HTTP输出日志 |
KafkaAppender | 将日志输出到Apache Kafka |
MemoryMappedFileAppender | 将日志输出到一块文件关联的内存 |
NoSQLAppender | 将日志输出到NoSQL数据库,如MongoDB |
OutputStreamAppender | 将日志输出到一个OutputStream |
RandomAccessFileAppender | 性能比FileAppender高20%~200%的文件输出Appender |
RewriteAppender | 允许对日志信息进行加工 |
RollingFileAppender | 按log文件最大长度限度生成新文件 |
RollingRandomAccessFA | 添加了缓存的RollingFileAppender |
RoutingAppender | 将日志事件分类,按条件分配给子appender |
SMTPAppender | 将日志输出到邮件 |
SocketAppender | 将日志输出到一个Socket |
SyslogAppender | 是一个SocketAppender,将日志输出到远程系统日志 |
ZeroMQ/JeroMQ Appender | 使用JeroMQ库将日志输出到ZeroMQ终端 |
常用Appender讲解
ConsoleAppender
ConsoleAppender将日志信息输出到System.out。它的所有属性如下:
- filter:设置过滤器
- layout:设置输出样式
- follow:Identifies whether the appender honors reassignments of System.out or System.err via System.setOut or System.setErr made after configuration.
- direct:是否绕过java.lang.System.out/.err,直接写入java.io.FileDescriptor。这会带来10倍的性能提升。
- name:Appender的名字
- ignoreException:默认true。
- target:输出方法,“SYSTEM_OUT”或者“SYSTEM_ERR”。默认“SYSTEM_OUT”
一个典型的控制台配置实例: