java - Log4j:socketappender - 当远程主机关闭时如何捕获本地文件中的日志

标签 java elasticsearch log4j logstash apache-commons-logging

我有一个场景,我们正在记录到远程logstash 主机。现在根据 log4j 文档,对于 SocketAppender,如果远程主机关闭,日志事件将被简单地删除。我想自定义套接字附加程序,以便在本地日志文件中捕获那些丢弃的日志。这样就不会遗漏任何内容。

我尝试过,但没成功。 socketappender中有2个方法connect和append(event)

但在我看来,只有连接成功时才会调用追加。虽然 connect 方法没有返回任何内容

那么,如果远程主机关闭,我如何在本地文件中捕获该事件

引用号:https://logging.apache.org/log4j/1.2/xref/org/apache/log4j/net/SocketAppender.html

我还尝试了 Fallbackerror 处理程序。但它只记录一次,然后不再记录。所以基本上它似乎不起作用

最佳答案

写入本地日志文件并使用filebeat将日志发送到logstash。当logstash不可用时,日志将在本地假脱机(“免费”分布式缓存)。

如果您的本地日志文件轮换时,logstash 仍然处于关闭状态,则存在一种特殊情况...

关于java - Log4j:socketappender - 当远程主机关闭时如何捕获本地文件中的日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40283377/

相关文章:

java - 为什么此Java代码不起作用?

java - 如何在键盘应用程序中调整按钮大小?

java - Android 开发 : Using setText with SpannableString with Lots of Spans Slow, 解决方法吗?

elasticsearch - Elasticsearch V5 Analyzer演示示例不起作用

java - 从日志文件解析 Log4j 布局

java - 编写静态同步方法(等待线程的结果)

linux - awk 在输出中打印不必要的新行

elasticsearch - 无论如何在查询搜索中创建别名?

java - 如何使用 mvn assembly :assembly? 包含 log4j.properties

java - Log4j2 未记录外部文件