前面两章节我们介绍了一些日志框架的常见配置及使用实践。一般上,在开发过程中,像log4j2、logback日志框架都提供了很多Appender,基本上可以满足大部分的业务需求了。但在一些特殊需求或者需要将日志进行集中管理(集群部署时,日志是分拆到不同服务器上的,不可能去每一台服务器上去下载文件的,也不便于日志检索)时,就需要自定义Appender,将日志集中输出或者其他一些特殊需求。所以本章节就来简单介绍下关于log4j2和logback的自定义Appender知识。
一点知识
编写自定义Appender时,我们先来看看log4j2和logback自带了哪些Appender,了解下是否可以满足我们的个性化需求,避免重复制造轮子。
log4j2自带Appender先看一张官网提供的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 将日志输出到一块文件关联的内存
OutputStreamAppender 将日志输出到一个OutputStream
RandomAccessFileAppender 性能比FileAppender高20%~200%的文件输出Appender
RewriteAppender 允许对日志信息进行加工
RollingFileAppender 按log文件最大长度限度生成新文件
RollingRandomAccessFA 添加了缓存的RollingFileAppender
RoutingAppender 将日志事件分类,按条件分配给子appender
SMTPAppender 将日志输出到邮件
SocketAppender 将日志输出到一个Socket
SyslogAppender 是一个SocketAppender,将日志输出到远程系统日志
ZeroMQ/JeroMQ Appender 使用JeroMQ库将日志输出到ZeroMQ终端
基本上已经覆盖了百分之九十的业务场景了。相关的详细说明或者配置大家自行搜索或者查看官网说明。
官网地址:
和log4j2一样,自带的都差不多了。
名称 描述ConsoleAppender 将日志输出到控制台
FileAppender 将日志输出到文件
RollingFileAppender 滚动文件生成,按条件生成不同文件,配合TriggeringPolicy使用
SocketAppender 输出日志到远程实例中,明文传输
SSLSocketAppender 输出日志到远程实例中,密文传输
SMTPAppender 将日志输出到邮件
DBAppender 日志事件插入数据库中,需要提前创建表
SyslogAppender 是一个SocketAppender,将日志输出到远程系统日志
SiftingAppender 可基于任何给定的实时属性分开(或者筛选)日志,如基于用户会话分开日志事件
AmqpAppender 将日志输出到MQ服务中
具体可查看:https://blog.csdn.net/tianyaleixiaowu/article/details/73327752 很详细!
或者查看官网:https://logback.qos.ch/manual/appenders.html
自定义Appender