logstash java_java+logstash

写在前面

在前面一篇文章中,我们介绍了如何在linux上搭建logstash+kafka的环境(logstash+kafka),在这篇中将介绍如何连通java日志文件和logstash。

日志分类

一般在java开发过程中最常用到的两种日志工具:

log4j : Apache的开源项目

logback : 可以说是log4j的改良版,和上者同一个作者

下面我们分别介绍这两种日志工具如何来和logstash连通,实现日志的收集。

log4j

log4j相对来说比较简单,它可以有两种配置方式:properties文件和xml文件

properties格式

log4j.rootLogger=DEBUG, logstash

##SocketAppender

log4j.appender.logstash=org.apache.log4j.net.SocketAppender

##logstash等待接收的端口

log4j.appender.logstash.Port=4560

##logstash服务所在机器的ip

log4j.appender.logstash.RemoteHost=logstash_hostname

log4j.appender.logstash.ReconnectionDelay=60000

log4j.appender.logstash.LocationInfo=true

##日志准入级别

log4j.appender.logstash.Threshold=DEBUG

xml格式

新增一个appender:

##logstash服务器IP

##日志准入等级

加入需要监控的logger中

对应的logstash的conf文件中的input配置如下:

input {

log4j {

type => "log4j-json"

port => 4560

}

}

log4j产生json格式的数据,格式如下:

{

"message" => "Sorry, something wrong!",

"@version" => "1",

"@timestamp" => "2015-07-02T13:24:45.727Z",

"type" => "log4j-json",

"host" => "127.0.0.1:52420",

"path" => "HelloExample",

"priority" => "ERROR",

"logger_name" => "HelloExample",

"thread" => "main",

"class" => "HelloExample",

"file" => "HelloExample.java:9",

"method" => "main",

"stack_trace" => "java.lang.ArithmeticException: / by zero\n\tat HelloExample.divide(HelloExample.java:13)\n\tat HelloExample.main(HelloExample.java:7)"

}

只需要在日志配置文件中加入对应的appender即可,是不是so easy~

logback

logback相对比较复杂,我们需要用到git上的一个开源项目

net.logstash.logback

logstash-logback-encoder

4.7

还要保证我们的项目中有如下的依赖:

jackson-databind / jackson-core / jackson-annotations

logback-core

logback-classic (required for logging LoggingEvents)

logback-access (required for logging AccessEvents)

slf4j-api

在logback.xml文件中添加一个appender:

192.168.1.193:9250

加入到需要监控的logger中:

在logstash配置文件可以有多种交互方式,这里我们选择tcp协议:

input {

tcp {

##host:port即为上面appender中的destination

host => "192.168.1.193"

port => 9250

##模式选择server模式

mode => "server"

tags => ["tags"]

##格式json

codec => json_lines

}

}

按照上面的配置,输入的日志如下:

{

"@timestamp" => "2016-09-13T07:05:06.480Z",

"@version" => 1,

"message" => "HelloController exception",

"logger_name" => "com.springapp.mvc.HelloController",

"thread_name" => "http-bio-8080-exec-1",

"level" => "ERROR",

"level_value" => 40000,

"stack_trace" => "java.lang.ArithmeticException: / by zero",

"HOSTNAME" => "gejunqingdeMacBook-Pro.local",

"host" => "192.168.1.192",

"port" => 57635,

"tags" => [

[0] "tags"

]

}

配置和log4j相似,只是需要引入额外的jar包,所以繁琐一点。

小结

至此,我们已经实现了log-->logstash-->kafka的配置,再加上邮件功能,我们的日志监控发邮件的系统就完成啦。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值