要修改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