天天看点

修改Flume Log4j Appender

要修改flume log4j appender的实现,我们先了解一下log4j appender是如何自定义的。

自定义log4j appender需要继承log4j公共的基类:appenderskeleton

打印日志核心方法:abstract protected void append(loggingevent event);

初始化加载资源:public void activateoptions(),默认实现为空

释放资源:public void close()

是否需要按格式输出文本:public boolean requireslayout()

正常情况下我们只需要覆盖append方法即可。然后就可以在log4j中使用了

demo:

log4j.properties 配置

执行main函数,输出结果 hello, world : i am ready.

由于hostname,logtype是固定不变的。所以直接写死在代码中。appname则用log4j.properties进行配置 – appname在log4j.properties中配置,添加:

在log4jappender类中添加:

hostname,logtype在log4jappender类中添加

由于flume log4j appender并没有将log4j的错误异常栈详细信息封装到event中,不利于我们的告警系统分析原因。 log4jappender.append()中添加如下:

日志接收端就可以接受到日志的详细信息:

posted by edwardsbean dec