日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[logstash-input-log4j]插件使用

發(fā)布時(shí)間:2025/3/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [logstash-input-log4j]插件使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Log4j插件可以通過(guò)log4j.jar獲取Java日志,搭配Log4j的SocketAppender和SocketHubAppender使用,常用于簡(jiǎn)單的集群日志匯總。

最小化的配置

?

input {log4j {host=>"localhost"port=>4560} } output {stdout {} }

?

  log4j插件配置host以及port就能監(jiān)聽(tīng)localhost上的4560端口的log4j消息。

  此時(shí),如果你的log4j向本地主機(jī)以SocketAppender的方式輸出日志消息,Logstash就能捕獲到,參考的log4j配置文件如下:

?

<?xml version="1.0" encoding= "UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j=" http://jakarta.apache.org/log4j/" > <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender" > <layout class="org.apache.log4j.PatternLayout" > <param name="ConversionPattern" value="%d{yyyy/MM/dd-HH:mm:ss} >> %5p >> %t >> %l >> %m%n" /> </layout> </appender> <appender name="socketAppender" class="org.apache.log4j.net.SocketAppender"> <param name="remoteHost" value="localhost" /> <param name="port" value="4560" /> <param name="Threshold" value="INFO" /> <param name="ReconnectionDelay" value="1000" /> <param name="LocationInfo" value="true" /> </appender><root> <priority value="info" /> <appender-ref ref="ConsoleAppender" /><appender-ref ref="sockethubAppender" /> </root> </log4j:configuration>

?

重要參數(shù)詳解

  mode logstash工作模式,可選"server"或者"client",默認(rèn)是"server"

  server就是把logstash看做是日志的服務(wù)器,接收l(shuí)og4j主機(jī)端生成的日志消息。

  client則是把logstash看做是tcp的發(fā)起者,請(qǐng)求log4j主機(jī)返回日志消息。

?

  host 主機(jī)地址,字符串類(lèi)型,如"localhost"或者"192.168.0.1"

  如果是server模式,就是監(jiān)聽(tīng)的主機(jī)地址

  如果是client模式,就是連接的目標(biāo)地址

?

  port 端口號(hào),數(shù)字類(lèi)型,如 4567 或者 12345

  如果是server模式,就是監(jiān)聽(tīng)的端口號(hào)

  如果是client模式,就是連接的目標(biāo)端口號(hào)

?

  data_timeout 超時(shí)時(shí)間,秒為單位。如果設(shè)置-1,則永不超時(shí),默認(rèn)是5

  如果某個(gè)tcp連接閑置了,則超過(guò)該時(shí)間限制,就斷開(kāi)或者關(guān)閉連接。

Server模式

  server模式就是把logstash作為服務(wù)器,輸出日志消息的java程序所在的主機(jī)作為客戶(hù)機(jī),大致類(lèi)似如下:

  Logstash的插件配置如下:

?

input{log4j {mode => "server"host => "localhost"#注意這里,這里是Logstash服務(wù)器的地址或者主機(jī)名port => 4560} } output{stdout{} }

?

  java程序log4j日志配置文件如下:

?

<?xml version="1.0" encoding= "UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" ><appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender" ><layout class="org.apache.log4j.PatternLayout" ><param name="ConversionPattern" value="%d{yyyy/MM/dd-HH:mm:ss} >> %5p >> %t >> %l >> %m%n" /></layout></appender><appender name="socketAppender" class="org.apache.log4j.net.SocketAppender"><param name="remoteHost" value="localhost" /><!-- 遠(yuǎn)程主機(jī)地址 --><param name="port" value="4560" /><!-- 遠(yuǎn)程主機(jī)端口 --><param name="Threshold" value="DEBUG" /><param name="ReconnectionDelay" value="60000" /><param name="LocationInfo" value="true" /></appender><root><priority value="debug" /><appender-ref ref="ConsoleAppender" /><appender-ref ref="socketAppender" /></root> </log4j:configuration>

?

?  另外需要注意的是,如果使用server模式,監(jiān)聽(tīng)的ip地址只能是本機(jī)地址,否則無(wú)法綁定socket。

  例如,我本身的服務(wù)器地址是10.4.5.6,那么我要綁定一個(gè)遠(yuǎn)端機(jī)器,10.4.5.7,就會(huì)報(bào)如下錯(cuò)誤:

Client模式

  client模式就是把Logstash當(dāng)做客戶(hù)端,去請(qǐng)求返回java程序所在的主機(jī)輸出的日志,大致如下:

  logstash的配置如下:

?

input{log4j {mode => "client"host => "10.4.5.6"port => 9999} } output{stdout{} }

?

  java程序這端的log4j配置文件如下:

?

<?xml version="1.0" encoding= "UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j=" http://jakarta.apache.org/log4j/" > <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender" > <layout class="org.apache.log4j.PatternLayout" > <param name="ConversionPattern" value="%d{yyyy/MM/dd-HH:mm:ss} >> %5p >> %t >> %l >> %m%n" /> </layout> </appender> <appender name="sockethubAppender" class="org.apache.log4j.net.SocketHubAppender"> <param name="port" value="9999" /> <param name="Threshold" value="INFO" /> <param name="LocationInfo" value="true" /> </appender> <root> <priority value="info" /> <appender-ref ref="ConsoleAppender" /><appender-ref ref="sockethubAppender" /> </root> </log4j:configuration>

?

擴(kuò)展

  其實(shí)從logstash源碼的角度看,就比較好理解他們的不同工作了!

  可以看到,如果是server模式,logstash會(huì)創(chuàng)建一個(gè)新的線(xiàn)程,持續(xù)的監(jiān)聽(tīng)目標(biāo)主機(jī)和端口;如果是client模式,則是創(chuàng)建了一個(gè)tcp連接。

  對(duì)應(yīng)來(lái)說(shuō),server模式對(duì)應(yīng)log4j的SocketAppender模式,client模式對(duì)應(yīng)log4j的SocketHubAppender模式。

  

  注意:

  1 如果是server模式,那么監(jiān)聽(tīng)的主機(jī)地址應(yīng)該是IP地址,寫(xiě)localhost會(huì)導(dǎo)致無(wú)法接收其他主機(jī)發(fā)送的信息。

  2 如果是client模式,監(jiān)聽(tīng)的端口不能是4560

?

總結(jié)

以上是生活随笔為你收集整理的[logstash-input-log4j]插件使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。