我一直在使用UDPAppender将日志发送到logstash。我希望能够通过DNS实现logstash服务器的故障转移。
隐式地, UDPAppender 不检测远程UDP端口是否可用,但即使它确实存在,当我使用 remoteAddress <的DNS名称配置它时/ em> ,在初始化期间解析为IP地址,并在 RemoteAddresss 属性中记录为IP地址。我知道RemotingAppender,但这似乎不喜欢logstash,因为logstash TCP输入没有实现.NET远程处理协议,看起来好像它会遇到解决远程问题的同样问题仅在初始化步骤通过DNS的IP地址。
我正在考虑实现我自己的appender,通过使用ping包装UDPAppender或通过DNS名称处理重新连接来复制RemotingAppender。这样的事情是否已经存在?
答案 0 :(得分:1)
你试过log4stash吗? 它是一个log4net appender,几乎没有类似logstash的功能,可以将您的日志直接发送到Elasticsearch。 这样你就可以减少一个&#34;失败点&#34;在弹性搜索的方式(根本不需要使用logstash)。
如果你想坚持使用TCPAppender,那么 您可以毫不费力地将UDPAppender的代码转移到tcp中 我曾经做过一次,但不幸的是我无法发布代码。
答案 1 :(得分:-4)
我发现这个here,UdpAppender接近结尾
UdpAppender
有关完整详细信息,请参阅SDK参考条目:log4net.Appender.UdpAppender。
以下示例显示如何配置UdpAppender以将事件发送到指定RemotePort上的RemoteAddress。
final String NAME = "name";
final String CODE = "code";
BufferedReader br = new BufferedReader(new FileReader(file));
PrintWriter out = new PrintWriter(new FileWriter("log.txt", true));
while ((line = br.readLine()) != null) {
String[] splits = line.split("=");
String key = splits[0];
String value = splits[1];
if (key.equals(NAME) || key.equals(CODE)) {
out.println(value);
}
}
out.close();