我有一个独立的java应用程序,它使用log4j2打印logger语句。我已经配置了flume客户端和flume服务器。flume服务器工作正常。当我运行java应用程序时,我在服务器中创建了连接,但是没有打印logger语句。
以下是flume服务器控制台中的记录器语句:
INFO [lifecycleSupervisor-1-5] (org.apache.flume.source.AvroSource.start:168) - Avro source r1 started.
INFO [pool-7-thread-1] (org.apache.avro.ipc.NettyServer$NettyServerAvroHandler.handleUpstream:171) - [id: 0x00633e5e, /127.0.0.1:56177 => /127.0.0.1:8800] OPEN
INFO [pool-8-thread-1] (org.apache.avro.ipc.NettyServer$NettyServerAvroHandler.handleUpstream:171) - [id: 0x00633e5e, /127.0.0.1:56177 => /127.0.0.1:8800] BOUND: /127.0.0.1:8800
INFO [pool-8-thread-1] (org.apache.avro.ipc.NettyServer$NettyServerAvroHandler.handleUpstream:171) - [id: 0x00633e5e, /127.0.0.1:56177 => /127.0.0.1:8800] CONNECTED: /127.0.0.1:56177
请帮我解决这个问题。我应该如何从flume服务器控制台中的java独立应用程序获取logger语句?
提前谢谢。
2条答案
按热度按时间eanckbw91#
为什么要在服务器控制台中查看日志事件?当您的系统满负荷运行时,会发生很多事件,您将不必要地降低系统的速度。
我建议使用flume文件roll sink将事件输出到日志文件中,以便您可以确认它们正在通过。
如果真的需要,可以打开flume服务器本身的日志记录。我认为debug或trace级别将开始产生大量关于正在发生的事情的信息,包括实际的日志消息。
我认为你混淆了两件事。
flume传输和存储日志语句。通常,这些日志语句是使用log4j这样的日志框架从源系统发送的。flume可以将它们存储在文件中,例如使用file\u role sink。
Flume本身记录其行为。它也使用log4j并将写入一个文件。但是,flume文档中没有任何关于flume将它正在传输的事件写入自己的日志的内容。
nnvyjq4y2#
我知道答案了。flume服务器的下载文件不完整。我在d:\apache-flume-1.3.1-bin\bin文件夹中缺少flume.bat。所以我再次下载了基于窗口的apacheflume服务器文件。你可以在这里下载
在flume.bat文件中设置flume\u home,该文件位于d:\apache-flume-1.3.1-bin\bin文件夹中。现在在命令提示符下,在d:\apache-flume-1.3.1-bin\bin下运行flume.bat启动flume服务器。
现在,当我运行客户机应用程序时,所有的logger语句都显示在flume服务器控制台和flume服务器log4j.properties中提到的文件appender中。