2014-11-04 93 views
1

我想通過log4j套接字appender流我的日誌,並試圖通過logstash log4j輸入插件檢索相同。我logstash配置看起來像logstash與log4j socketappender不起作用

input { 
     log4j 
     { 
     type=>"socketlogs" 
      port=>"1995" 
     } 
} 

output { 
     stdout {} 
     file 
     { path=>"socket.log"} 

} 

我的log4j.xml看起來像下面

<appender name="logstashsocketappender" class="org.apache.log4j.net.SocketAppender"> 
     <param name="RemoteHost" value=<logstash ip>/> 
     <param name="Port" value="1995"/> 
     <param name="ReconnectionDelay" value="60000"/> 
     <param name="Threshold" value="INFO"/> 
    </appender> 

<root> 
     <level value="INFO"/> 
     <appender-ref ref="logstashsocketappender"/> 
    </root> 

我在測試代碼中的logger.info聲明,但我沒有看到那些在標準輸出的logstash機。這是我使用的軟件版本

logstash - 1.4.2 的log4j - 1.7.5

讓我知道如果我在這裏失去了一些東西。

感謝您的幫助 Gowri

+0

您是否驗證過沒有防火牆問題? IE能否讓你的log4j機器在你的logstash機器上達到1995年的端口? – Alcanzar 2014-11-04 14:18:13

+0

是的,它連接到主機和端口。 – 2014-11-05 05:50:05

回答

0

我面對的使用logstash-1.4.2log4j-1.2.17一個類似的問題:只有我的一些記錄的信息在logstash到達。如果我記錄10條消息,則只有5到10條消息到達logstash。我發佈消息的時間越長(一束)消息就越多。 (經過一些迭代後,所有10條消息到達) - 也許在啓動時會出現一些消息丟失的問題?

也許你嘗試登錄一些消息也劃定問題...

如果這將是一個錯誤配置,你會得到log4j:ERROR Could not connect to remote log4j server at [localhost]. We will try again later.stderr在客戶端(發送方)。

它似乎是一個性能問題:如果我在一堆消息之間等待100ms所有消息到達logstash。

2

您是否嘗試過使用GELF? log4j內部使用TCP。 GELF使用UDP,所以它不會減慢你的應用程序。

logstash.conf

input { 
    gelf { 
     port => 12201 
    } 
} 

的log4j.xml

<appender name="gelf" class="biz.paluch.logging.gelf.log4j.GelfLogAppender"> 
    <param name="Threshold" value="INFO" /> 
    <param name="Host" value="udp:localhost" /> 
    <param name="Port" value="12201" /> 
</appender> 

更多的文檔見https://github.com/mp911de/logstash-gelf