ELK日志处理之使用logstash收集log4J日志
来源:互联网 发布:螨虫与痘痘的知乎 编辑:程序博客网 时间:2024/05/20 20:18
介绍一下如何从Java工程中导出log4J日志到Logstash。
一、log4j基础
不能免俗的官方介绍:
Log4j 是一个使用 Java 语言编写的,可靠、快速、灵活的日志框架(API),使用 Apache Software License 授权。它被移植到 C、C++、C#、Perl、Python、Ruby 和 Eiffel 语言中。
Log4j 是高度可配置的,在运行期使用外部的配置文件对其进行配置。它按照优先级别记录日志,并可将日志信息定向输出到各种介质,比如数据库、文件、控制台、Unix Syslog等。
Log4j 主要由三部分组成:
- loggers:负责采集日志信息。
- appenders:负责将日志信息发布到不同地方。
- layouts:负责以各种风格格式化日志信息。
二、新建Java工程
下面通过实际的工程配置学习如何配置log4j。
打开Eclipse或者Intellij Idea,新建一个maven工程。工程目录结构如下图所示:
pom.xml文件中加入log4j的依赖,版本为1.2.17
,pom.xml中的代码如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.logs</groupId> <artifactId>log4idemo1</artifactId> <version>1.0-SNAPSHOT</version> <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependencies> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies></project>
在resource目录下新建log4j.properties,加入以下配置:
### 设置###log4j.rootLogger = debug,stdout,D,E,logstash### 输出信息到控制抬 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n### 输出DEBUG 级别以上的日志到=/Users/bee/Documents/elk/log4j/debug.log###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = /Users/bee/Documents/elk/log4j/debug.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### 输出ERROR 级别以上的日志到=/Users/bee/Documents/elk/log4j/error.log ###log4j.appender.E = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.E.File =/Users/bee/Documents/elk/log4j/error.log log4j.appender.E.Append = truelog4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayoutlog4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n#输出日志到logstashlog4j.appender.logstash=org.apache.log4j.net.SocketAppenderlog4j.appender.logstash.RemoteHost=127.0.0.1log4j.appender.logstash.port=4560log4j.appender.logstash.ReconnectionDelay=60000log4j.appender.logstash.LocationInfo=true
配置文件中,把日志输出了四份:
- 第一份输出到控制台
- 第二份把DEBUG 级别以上的日志到文件
- 第三份把输出ERROR 级别以上的日志到文件
- 第四份输出到logstash
在java目录下添加Log4jTest.java,内容如下:
import org.apache.log4j.Logger;/** * Created by bee on 17/3/6. */public class Log4jTest { public static final Logger logger=Logger.getLogger(Log4jTest.class); public static void main(String[] args) { logger.debug("This is a debug message!"); logger.info("This is info message!"); logger.warn("This is a warn message!"); logger.error("This is error message!"); try{ System.out.println(5/0); }catch(Exception e){ logger.error(e); } }}
三、配置logstash
(logstash的安装和hello world教程请点这里http://blog.csdn.net/napoay/article/details/53276758)这里使用logstash2.3.3和Elasticsearch 2.3.3,首先启动Elasticsearch,然后在logstash-2.3.3/conf目录下新建配置文件log4j-es.conf,文件内容如下:
input { log4j { host => "127.0.0.1" port => 4560 }}output { stdout { codec => rubydebug } elasticsearch{ hosts => ["localhost:9200"] index => "log4j-%{+YYYY.MM.dd}" document_type => "log4j_type" }}
配置文件中指定日志输出有2份,一份输出到console,一份输出到Elasticsearch。
启动logstash:
sudo ./bin/logstash -f conf/log4j-es.conf
如果你已经启动了Elasticsearch,IP和端口都是通畅的,配置文件无误,启动成功后的界面如下:
运行Log4jTest.java,在终端中可以看到以下输出:
在Elasticsearch中查看导入的日志:
四、总结
上述配置完成了日志的产生,到logstash,再到Elasticsearch,介绍完毕。
- ELK日志处理之使用logstash收集log4J日志
- ELK日志处理之使用logstash收集log4J日志
- ELK日志处理之使用logstash收集log4J日志
- ELK实战-Logstash:收集rsyslog日志
- Logstash -- Nginx 日志收集处理!
- ELK日志收集系统调研(二)---LogStash Shipper&Indexer
- ELK日志收集系统调研(三) -- LogStash常用配置
- ELK日志处理之使用Grok解析日志
- 日志系统ELK使用详解(二)--Logstash安装和使用
- ELK之nginx日志的简单收集
- ELK日志收集系统调研(一)---初识ELK(ES、LogStash、Kibana)
- Logstash收集Syslog日志
- Logstash日志收集实践
- 使用logstash收集nginx访问日志
- ELK日志管理之——logstash部署
- ELK日志管理之——logstash配置语法
- 21.ELK实时日志分析平台之Logstash简介
- 22.ELK实时日志分析平台之Logstash安装
- 把VIM打造成python开发环境
- jeecms 利用hover生成下拉菜单
- 图片解码播放器2
- ViewPager懒加载分析推荐
- 关于复杂语句和++的优先级
- ELK日志处理之使用logstash收集log4J日志
- Git-本地提交及远程提交
- codevs 1073 家族 并查集
- Java之TCP通讯
- js面试题--红绿灯切换效果
- android 闹钟与通知---练习
- HDU 5857
- HDU 5867 打表
- 识别和分析事物问题的思维方法