2014-08-29 69 views
9

我一直在使用UDPAppender將日誌發送到logstash。我希望能夠通過DNS實現logstash服務器的故障轉移。對於log4net是否存在低級TCP appender?

隱含的UDPAppender沒有檢測到遠程UDP端口是否是可用的,但即使那樣,當我與DNS名稱將其配置爲remoteAddress,它解析爲IP初始化期間的地址並記錄爲RemoteAddresss屬性中的IP地址。我知道RemotingAppender,但這似乎不喜歡logstash,因爲logstash TCP輸入沒有實現.NET遠程協議,並且它看起來好像會遭遇通過DNS解析遠程IP地址的相同問題僅在初始化步驟。

我正在考慮實現我自己的appender,通過用ping包裝UDPAppender或通過處理通過DNS名稱重新連接來複制RemotingAppender。這樣的事情是否已經存在?

+0

尋找相同。任何成功的羅布?羅布你可以參考任何文章/博客帖子用UDPApender/log4net和logstash進行日誌記錄。 – 2015-02-16 11:18:59

+0

我一起黑我的這個用途,這是基於https://github.com/merchantwarehouse/syslog4net TcpAppender:https://dotnetfiddle.net/3WE7h9 - 事實證明你有一個選擇如何緩衝並在未連接時丟棄數據包。對於如何刷新DNS緩存可能有些過激,但至少可以工作 – 2015-10-14 22:53:52

回答

-3

我發現這個here,則UdpAppender已經接近尾聲

SDK reference

UdpAppender

有關詳情請參閱SDK參考條目:log4net.Appender.UdpAppender。

以下示例顯示如何配置UdpAppender以將事件發送到指定RemotePort上的RemoteAddress。

<appender name="UdpAppender" type="log4net.Appender.UdpAppender"> 
    <localPort value="8080" /> 
    <remoteAddress value="224.0.0.1" /> 
    <remotePort value="8080" /> 
    <layout type="log4net.Layout.PatternLayout, log4net"> 
     <conversionPattern value="%-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
</appender> 
+0

此答案鏈接到我的問題中提到的同一個UDPAppender,並沒有解決任何DNS故障轉移問題。如果我有權力會投票。 – 2015-06-07 14:15:46

+2

是的,我給你提供了UDP appender的示例代碼,因爲沒有提供任何代碼,所以很難弄清楚哪些點不適合你。所以如果你能提供一個示例代碼,以便我可以幫助你。僅供參考,清空投票威脅並非真正的Stackover流程。提供樣本以及迄今爲止所做的是,這不是一個能夠完成您的工作的網站,但可以在您遇到困難時幫助您。 – CheGueVerra 2015-06-08 15:54:49

0

您是否試過log4stash
這是一個log4net appender,它具有logstash等類似功能,並將您的日誌直接發送到Elasticsearch。
這樣你在彈性搜索的方式中就會少一個「失敗點」(根本不需要使用logstash)。

如果你要堅持TCPAppender,
可以的UDPAppender代碼轉移到一個tcp沒有太多精力。
我做了一次,但不幸的是我無法發佈代碼。