elk日志处理之使用logstash收集log4j日志

esc_ai esc_ai     2022-08-24     356

关键词:

介绍一下如何从Java工程中导出log4J日志到Logstash。

一、log4j基础

不能免俗的官方介绍:

Log4j 是一个使用 Java 语言编写的,可靠、快速、灵活的日志框架(API),使用 Apache Software License 授权。它被移植到 C、C++、C#、Perl、Python、Ruby 和 Eiffel 语言中。

Log4j 是高度可配置的,在运行期使用外部的配置文件对其进行配置。它按照优先级别记录日志,并可将日志信息定向输出到各种介质,比如数据库、文件、控制台、Unix Syslog等。

Log4j 主要由三部分组成:

  1. loggers:负责采集日志信息。
  2. appenders:负责将日志信息发布到不同地方。
  3. 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.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.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.DailyRollingFileAppender
log4j.appender.D.File = /Users/bee/Documents/elk/log4j/debug.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.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.DailyRollingFileAppender
log4j.appender.E.File =/Users/bee/Documents/elk/log4j/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

#输出日志到logstash
log4j.appender.logstash=org.apache.log4j.net.SocketAppender
log4j.appender.logstash.RemoteHost=127.0.0.1
log4j.appender.logstash.port=4560
log4j.appender.logstash.ReconnectionDelay=60000
log4j.appender.logstash.LocationInfo=true

配置文件中,把日志输出了四份:

  1. 第一份输出到控制台
  2. 第二份把DEBUG 级别以上的日志到文件
  3. 第三份把输出ERROR 级别以上的日志到文件
  4. 第四份输出到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,介绍完毕。

海量日志下的日志架构优化:filebeat+logstash+kafka+elk(代码片段)

...构。但是如果业务每天会产生海量的日志,就有可能引发logstash和elasticsearch的性能瓶颈问题。因此改善这一问题的方法就是filebeat+logstash+kafka+ELK,也就是将存储从elasticsearch转移给消息中间件,减少海量数据引起的宕机,降低elast... 查看详情

elk之logstash系统日志和nginx日志收集-4(代码片段)

logstash常用参数 1path  是必须的选项,每一个file配置,都至少有一个path  2exclude  是不想监听的文件,logstash会自动忽略该文件的监听。配置的规则与path类似,支持字符串或者数组,但是要求必须是绝对路径。  3start_... 查看详情

elk问题处理

1.Logstash收集tomcat日志时报错warn:log4j:WARNNoappenderscouldbefoundforlogger(org.apache.http.client.protocol.RequestAuthCache).log4j:WARNPleaseinitializethelog4jsystemproperly.log4j:WARNSeehttp://logging.ap 查看详情

elk之数据收集传输过滤filebeat+logstash部署

...我们需要安装数据采集工具filebeats和数据过滤机运输工具Logstash,一般情况我们都使用filebeats用来收集日志文件,我自定义了一个log文件,文件内容如下:55.3.244.1GET/index.html158240.04355.3.244.1GET/index. 查看详情

elk日志处理之使用grok解析日志

...。Grok内置了120多种的正则表达式库,地址:https://github.com/logstash-plugins/logstash-patterns-core/tree/master/ 查看详情

elk日志套件安装与使用

1、ELK介绍ELK不是一款软件,而是elasticsearch+Logstash+kibana三款开源软件组合而成的日志收集处理套件,堪称神器。其中Logstash负责日志收集,elasticsearch负责日志的搜索、统计,而kibana则是ES的展示神器,前端炫丽,点几下鼠标简单... 查看详情

elk使用filebeat替代logstash收集日志(代码片段)

...一个轻量的日志采集器,以上我们使用的日志采集工具是logstash,但是logstash占用的资源比较大,没有beats轻量,所以官方也推荐使用beats来作为日志采集工具。而且beats可扩展,支持自定义构建。官方介绍:https://www.elastic.co/cn/pro... 查看详情

springboot应用整合并使用docker安装elk实现日志收集

前言ELK即Elasticsearch、Logstash、Kibana,组合起来可以搭建线上日志系统,本文主要讲解使用ELK来收集SpringBoot应用产生的日志。ELK中各个服务的作用Elasticsearch:用于存储收集到的日志信息;Logstash:用于收集日志,SpringBoot应... 查看详情

elk+kafka构建日志收集系统之环境安装(代码片段)

...;kafka构建日志收集系统之环境安装1.背景ELK由Elasticsearch、Logstash和Kibana三部分组件组成;Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制... 查看详情

elk日志平台之logstash

一、ELKStack简介Elstaicsearch:存储和搜索logstash:收集kibana:展示650)this.width=650;"src="http://s2.51cto.com/wyfs02/M02/86/A1/wKioL1fGN-_z8_S3AABPgVmad_U461.jpg-wh_500x0-wm_3-wmp_4-s_606178705.jpg"title="QQ图片20160 查看详情

elk+zookeeper+kafka收集springcould日志配置文档

############本文介绍使用ELK(elasticsearch、logstash、kibana)+ kafka来搭建一个日志系统。主要演示使用springaop进行日志收集,然后通过kafka将日志发送给logstash,logstash再将日志写入elasticsearch,这样elasticsearch就有了日志数据了,最后... 查看详情

elk之filebeat结合logstash过滤出来你想要的日志(代码片段)

...lasticsearch是原始格式,乱的让人抓狂,这个时候你会发现Logstashfilter的可爱之处,它很像一块橡皮泥,如果我们手巧的话就会塑造出来让自己舒舒服服的作品,but如果你没搞好的话那就另说了,本文的宗旨就是带 查看详情

elk安装配置简单使用

ELK是三款软件的总称,包括了elasticsearch、logstash、kibana,其实在生产使用中,我们还需要使用到其他的更多辅助软件来更好更合理的收集展示数据。Elasticsearch:一个分布式的搜索查询服务器,提供了rest接口Logstash:收集处理并... 查看详情

日志分析系统elk之logstash(代码片段)

Logstash什么是ELKLogstash简介Logstash组成1、输入2、过滤器(可选)3、输出Logstash安装与配置通过命令行运行Logstash参数-e参数-f日志输出到文件日志上传到elasticsearchLogstash伪装为日志服务器grok过滤插件分割命令行的信息输出... 查看详情

elk(代码片段)

...elk简介ELK是三个开源软件的缩写,分别表示:Elasticsearch,Logstash,Kibana,它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方... 查看详情

初探elk-logstash使用小结

初探ELK-logstash使用小结2016/9/12【写在前言】说起处理日志的手段,大家或多或少都听说过ELK(elasticsearch+logstash+kibana),怎么入门呢?咱们从一个小小的目标开始。目标:收集nginx日志,集中展示。不少人对ELK的第一印象,容易... 查看详情

docker安装elk收集springboot日志(方法1)

参考技术A1、logstash中安装json_lines插件并重启logstash2、在SpringBoot项目pom.xml文件中添加logstash-logback-encoder依赖3、logback.xml文件添加配置,让logback的日志输出到logstash4、启动springboot应用5、使用kibana查看日志信息 查看详情

elk之收集haproxy日志

...借助rsyslog来收集haproxy的日志.haproxy代理nginx的访问,使用logstash收集nginx的访问信息.1.安装配置haproxyyum-yinstallgccpcrepcre-developensslopenssl-develcd/usr/local/src/wgethttps://www.haproxy.org/download/1.7/src/haproxy-1.7.11.tar.gztarxfhaproxy-1.7.11.tar.gzcdhaproxy-1.7... 查看详情