Skip to content

Commit f46884c

Browse files
committed
✨ 添加接入日志中心 ELK 的示例
1 parent e6a5986 commit f46884c

6 files changed

Lines changed: 210 additions & 0 deletions

File tree

codes/javatool/pom.xml

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<?xml version="1.0"?>
2+
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
3+
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
7+
<!-- [Part 1] BASIC SETTINGS BEGIN -->
8+
9+
<!-- MAVEN COORDINATE BEGIN -->
10+
<groupId>io.github.dunwu</groupId>
11+
<artifactId>javatool</artifactId>
12+
<version>1.0.0</version>
13+
<packaging>jar</packaging>
14+
<!-- MAVEN COORDINATE END -->
15+
16+
<!-- RELATIONSHIP SETTINGS BEGIN -->
17+
<dependencies>
18+
<!-- log start -->
19+
<dependency>
20+
<groupId>ch.qos.logback</groupId>
21+
<artifactId>logback-core</artifactId>
22+
<version>1.2.3</version>
23+
</dependency>
24+
<dependency>
25+
<groupId>ch.qos.logback</groupId>
26+
<artifactId>logback-classic</artifactId>
27+
<version>1.2.3</version>
28+
</dependency>
29+
<dependency>
30+
<groupId>ch.qos.logback</groupId>
31+
<artifactId>logback-access</artifactId>
32+
<version>1.2.3</version>
33+
</dependency>
34+
<dependency>
35+
<groupId>net.logstash.logback</groupId>
36+
<artifactId>logstash-logback-encoder</artifactId>
37+
<version>4.11</version>
38+
</dependency>
39+
<!-- log end -->
40+
41+
<dependency>
42+
<groupId>junit</groupId>
43+
<artifactId>junit</artifactId>
44+
<version>4.12</version>
45+
<scope>test</scope>
46+
</dependency>
47+
<dependency>
48+
<groupId>commons-codec</groupId>
49+
<artifactId>commons-codec</artifactId>
50+
<version>1.4</version>
51+
</dependency>
52+
</dependencies>
53+
<!-- RELATIONSHIP SETTINGS END -->
54+
55+
<!-- PROPERTIES BEGIN -->
56+
<properties>
57+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
58+
<java.version>1.6</java.version>
59+
<maven.compiler.source>${java.version}</maven.compiler.source>
60+
<maven.compiler.target>${java.version}</maven.compiler.target>
61+
</properties>
62+
<!-- PROPERTIES END -->
63+
64+
<!-- [Part 1] BASIC SETTINGS END -->
65+
66+
67+
<!-- [Part 2] BUILD SETTINGS BEGIN -->
68+
<build>
69+
<resources>
70+
<resource>
71+
<filtering>true</filtering>
72+
<directory>src/main/resources</directory>
73+
<includes>
74+
<include>logback.xml</include>
75+
</includes>
76+
<!--<targetPath>/abc</targetPath>-->
77+
</resource>
78+
</resources>
79+
</build>
80+
<!-- [Part 2] BUILD SETTINGS END -->
81+
82+
83+
<!-- [Part 3] PROJECT INFO BEGIN -->
84+
<name>${project.artifactId}</name>
85+
<description>Java 工具使用示例</description>
86+
<!-- [Part 3] PROJECT INFO END -->
87+
88+
89+
</project>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package io.github.dunwu.javatool;
2+
3+
import java.util.concurrent.ExecutorService;
4+
import java.util.concurrent.Executors;
5+
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
8+
9+
/**
10+
* 向 Elastic 日志中心传输日志
11+
* logstash-logback-encoder jar 包会根据 logback 中的配置,将日志数据定向传输到 logstash
12+
* 详见 src/main/resources/logback.xml appender 配置
13+
* 使用 udp 方式传输时,有丢失日志的情况(ELK-UDP)
14+
* 使用 tcp 方式传输时,不会丢失日志(ELK-TCP)
15+
* @author Zhang Peng
16+
*/
17+
public class ElasticDemo {
18+
private static final Logger logger = LoggerFactory.getLogger(ElasticDemo.class);
19+
private static volatile int index = 0;
20+
21+
public static void main(String[] args) {
22+
ExecutorService executorService = Executors.newFixedThreadPool(100);
23+
for (int i = 0; i < 10000; i++) {
24+
executorService.submit(new Runnable() {
25+
@Override
26+
public void run() {
27+
logger.info("这是第 {} 条日志", ++index);
28+
}
29+
});
30+
}
31+
}
32+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
3+
<!-- logback中一共有5种有效级别,分别是TRACE、DEBUG、INFO、WARN、ERROR,优先级依次从低到高 -->
4+
<configuration scan="true" scanPeriod="60 seconds" debug="false">
5+
6+
<property name="FILE_NAME" value="javatool"/>
7+
8+
<!-- 将记录日志打印到控制台 -->
9+
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
10+
<encoder>
11+
<pattern>%d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n</pattern>
12+
</encoder>
13+
</appender>
14+
15+
<!-- RollingFileAppender begin -->
16+
<appender name="ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
17+
<!-- 根据时间来制定滚动策略 -->
18+
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
19+
<fileNamePattern>${user.dir}/logs/${FILE_NAME}-all.%d{yyyy-MM-dd}.log</fileNamePattern>
20+
<maxHistory>30</maxHistory>
21+
</rollingPolicy>
22+
23+
<!-- 根据文件大小来制定滚动策略 -->
24+
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
25+
<maxFileSize>30MB</maxFileSize>
26+
</triggeringPolicy>
27+
28+
<encoder>
29+
<pattern>%d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n</pattern>
30+
</encoder>
31+
</appender>
32+
<appender name="ELK-UDP" class="net.logstash.logback.appender.LogstashSocketAppender">
33+
<host>192.168.28.32</host>
34+
<port>9250</port>
35+
<customFields>{"appname":"myWebservice"}</customFields>
36+
</appender>
37+
<appender name="ELK-TCP" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
38+
<!--
39+
destination 是 logstash 服务的 host:port,
40+
相当于和 logstash 建立了管道,将日志数据定向传输到 logstash
41+
-->
42+
<destination>192.168.28.32:9251</destination>
43+
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
44+
</appender>
45+
46+
<!-- RollingFileAppender end -->
47+
48+
<!-- logger begin -->
49+
<!-- 本项目的日志记录,分级打印 -->
50+
<logger name="io.github.dunwu.javatool" level="TRACE">
51+
<!--<appender-ref ref="ELK-UDP"/>-->
52+
<appender-ref ref="ELK-TCP"/>
53+
<appender-ref ref="ALL"/>
54+
</logger>
55+
56+
<root level="TRACE">
57+
<appender-ref ref="STDOUT"/>
58+
</root>
59+
<!-- logger end -->
60+
61+
</configuration>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
input { stdin { } }
2+
output {
3+
elasticsearch { hosts => ["localhost:9200"] }
4+
stdout { codec => rubydebug }
5+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
input {
2+
tcp {
3+
port => 9251
4+
codec => json_lines
5+
mode => server
6+
host => 127.0.0.1
7+
tags => ["tags"]
8+
}
9+
}
10+
output {
11+
elasticsearch { hosts => ["localhost:9200"] }
12+
stdout { codec => rubydebug }
13+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
input {
2+
udp {
3+
port => "9250"
4+
codec => json
5+
}
6+
}
7+
output {
8+
elasticsearch { hosts => ["localhost:9200"] }
9+
stdout { codec => rubydebug }
10+
}

0 commit comments

Comments
 (0)