ELKTlog之使用logstash收集log4J日誌__elk

來源:互聯網
上載者:User

介紹一下如何從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,介紹完畢。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.