返回介绍

Log4J Appender

发布于 2025-04-30 21:00:06 字数 2065 浏览 0 评论 0 收藏 0

将 Log4j 事件附加到 flume 代理的 avro 源。使用此 appender 的客户端必须在类路径中包含 flume-ng-sdk(例如,flume-ng-sdk-1.9.0.jar)。必需属性在 bold 中。

属性名称默认说明
Hostname-使用 avro 源运行远程 Flume 代理程序的主机名。
Port-远程 Flume 代理程序的 avro 源正在侦听的端口。
UnsafeModefalse如果为 true,则 appender 在发送事件失败时不会抛出异常。
AvroReflectionEnabledfalse使用 Avro Reflection 序列化 Log4j 事件。 (当用户记录字符串时不要使用)
AvroSchemaUrl-可从中检索 Avro 架构的 URL。

示例 log4j.properties 文件:

#...
log4j.appender.flume = org.apache.flume.clients.log4jappender.Log4jAppender
log4j.appender.flume.Hostname = example.com
log4j.appender.flume.Port = 41414
log4j.appender.flume.UnsafeMode = true

# configure a class's logger to output to the flume appender
log4j.logger.org.example.MyClass = DEBUG,flume
#...

默认情况下,通过调用 toString() 将每个事件转换为字符串
,或者使用 Log4j 布局,如果指定的话。

如果事件是 org.apache.avro.generic.GenericRecord 的实例
org.apache.avro.specific.SpecificRecord
,或者如果 property AvroReflectionEnabled
设置为 true
然后使用 Avro 序列化序列化事件。

使用 Avro 架构序列化每个事件效率很低,因此最好提供一个架构 URL,下游接收器(通常是 HDFS 接收器)可以从该架构 URL 检索架构。如果 AvroSchemaUrl
如果未指定,则架构将作为 Flume 标头包含在内。

示例 log4j.properties 文件配置为使用 Avro 序列化:

#...
log4j.appender.flume = org.apache.flume.clients.log4jappender.Log4jAppender
log4j.appender.flume.Hostname = example.com
log4j.appender.flume.Port = 41414
log4j.appender.flume.AvroReflectionEnabled = true
log4j.appender.flume.AvroSchemaUrl = hdfs://namenode/path/to/schema.avsc

# configure a class's logger to output to the flume appender
log4j.logger.org.example.MyClass = DEBUG,flume
#...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。