Logstash通过TCP获取log4j日志

Logstash的Input中有一个tcp插件,可以通过监听某一个主机上的特定端口来获取日志。大部分的日志库(logback,log4j,commons-logging乃至java自带的java.util.Logging)都支持将日志通过Socket方式输出。对于log4j,可以通过SocketAppender来实现将日志以Socket方式输出。

但是这样会有一个问题,log4j的SocketAppender与其他日志库的Socket方案稍有不同,log4j的SocketAppender会自动将包含日志的字符串对象进行序列化,而不像其他日志库那样直接发送raw内容,这样就会导致Logstash收到的日志变成一堆乱码,根本没法解析。其实对于这个问题,倒是有一个方法,那就是直接重写SocketAppender,把序列化的过程去掉,但是这样做未免太过麻烦。实际上官方已经想到了这个问题,并提供了解决方案。这个解决方案就是在input中使用官方提供的log4j插件,具体如下。

log4j.properties内容:

log4j.rootCategory=INFO,Logstash
# Logstash appender
log4j.appender.Logstash=org.apache.log4j.net.SocketAppender
log4j.appender.Logstash.RemoteHost=localhost
log4j.appender.Logstash.port=4560
log4j.appender.Logstash.Threshold=INFO
log4j.appender.Logstash.ReconnectionDelay=60000
log4j.appender.Logstash.LocationInfo=true

logstash配置文件内容:

 input {
     log4j {
         port => 4560
     }
 }
 
 output{
   elasticsearch { 
      hosts => ["localhost:9200"] 
      index => "logstash-%{+YYYY.MM.dd}"
      workers => 8
   }
   stdout {
      codec => dots
   }
 }


要配置log4net将日志发送到logstash,你需要进行以下步骤: 1. 首先,创建一个log4net配置文件,例如log4.conf,将其放置在logstash的配置目录下(例如/etc/logstash/conf.d/)。 2. 打开log4.conf文件,并添加以下配置: input { tcp { port => 4564 type => "from_log4" } } output { if [type]=="from_log4" { elasticsearch { hosts => ["127.0.0.1:9200"] index => "log4" user => "elastic" password => "12345678" } } } 这个配置指定了logstash监听4564端口,并将接收到的来自log4net的日志发送到elasticsearch中的log4索引中。 3. 保存并关闭log4.conf文件。 这样,当log4net将日志发送到logstash的4564端口时,logstash会将其索引到elasticsearch的log4索引中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [logstash的多种类型日志的配置方法](https://blog.csdn.net/peter_wsh/article/details/126106246)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [log4net之sysloglogstash结合](https://blog.csdn.net/qq_32292967/article/details/78646205)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值