Skip to content

Commit bb0cd36

Browse files
committed
✨ 添加 log4j 接入 elk 示例
1 parent fd42305 commit bb0cd36

3 files changed

Lines changed: 88 additions & 12 deletions

File tree

codes/javatool/pom.xml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@
1616
<!-- RELATIONSHIP SETTINGS BEGIN -->
1717
<dependencies>
1818
<!-- log start -->
19+
<dependency>
20+
<groupId>log4j</groupId>
21+
<artifactId>log4j</artifactId>
22+
<version>1.2.17</version>
23+
</dependency>
24+
1925
<dependency>
2026
<groupId>ch.qos.logback</groupId>
2127
<artifactId>logback-core</artifactId>
@@ -44,11 +50,6 @@
4450
<version>4.12</version>
4551
<scope>test</scope>
4652
</dependency>
47-
<dependency>
48-
<groupId>commons-codec</groupId>
49-
<artifactId>commons-codec</artifactId>
50-
<version>1.4</version>
51-
</dependency>
5253
</dependencies>
5354
<!-- RELATIONSHIP SETTINGS END -->
5455

@@ -72,6 +73,7 @@
7273
<directory>src/main/resources</directory>
7374
<includes>
7475
<include>logback.xml</include>
76+
<include>log4j.xml</include>
7577
</includes>
7678
<!--<targetPath>/abc</targetPath>-->
7779
</resource>

codes/javatool/src/main/java/io/github/dunwu/javatool/ElasticDemo.java

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,33 @@
88

99
/**
1010
* 向 Elastic 日志中心传输日志
11-
* logstash-logback-encoder jar 包会根据 logback 中的配置,将日志数据定向传输到 logstash
12-
* 详见 src/main/resources/logback.xml appender 配置
13-
* 使用 udp 方式传输时,有丢失日志的情况(ELK-UDP)
14-
* 使用 tcp 方式传输时,不会丢失日志(ELK-TCP)
11+
* Logback
12+
* logstash-logback-encoder jar 包会根据 logback 中的配置,将日志数据定向传输到 logstash 详见
13+
* src/main/resources/logback.xml appender 配置 使用 udp 方式传输时,有丢失日志的情况(ELK-UDP) 使用 tcp 方式传输时,不会丢失日志(ELK-TCP)
14+
* Log4j
15+
* 通过 org.apache.log4j.net.SocketAppender 发送 TCP 数据,Logstash 服务器使用 log4j input 插件 接收
1516
* @author Zhang Peng
1617
*/
1718
public class ElasticDemo {
1819
private static final Logger logger = LoggerFactory.getLogger(ElasticDemo.class);
20+
private static final org.apache.log4j.Logger log4jLog = org.apache.log4j.Logger.getLogger(ElasticDemo.class);
1921
private static volatile int index = 0;
2022

21-
public static void main(String[] args) {
22-
ExecutorService executorService = Executors.newFixedThreadPool(100);
23-
for (int i = 0; i < 10000; i++) {
23+
private static void sendLog4jLog() {
24+
ExecutorService executorService = Executors.newFixedThreadPool(10);
25+
for (int i = 0; i < 100; i++) {
26+
executorService.submit(new Runnable() {
27+
@Override
28+
public void run() {
29+
log4jLog.info(String.format("这是第 %d 条日志", ++index));
30+
}
31+
});
32+
}
33+
}
34+
35+
private static void sendLogbackLog() {
36+
ExecutorService executorService = Executors.newFixedThreadPool(10);
37+
for (int i = 0; i < 100; i++) {
2438
executorService.submit(new Runnable() {
2539
@Override
2640
public void run() {
@@ -29,4 +43,9 @@ public void run() {
2943
});
3044
}
3145
}
46+
47+
public static void main(String[] args) {
48+
sendLog4jLog();
49+
// sendLogbackLog();
50+
}
3251
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3+
4+
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
5+
6+
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
7+
<layout class="org.apache.log4j.PatternLayout">
8+
<param name="ConversionPattern"
9+
value="%d{yyyy-MM-dd HH:mm:ss,SSS\} [%-5p] [%t] %c{36\}.%M - %m%n"/>
10+
</layout>
11+
12+
<!--过滤器设置输出的级别-->
13+
<filter class="org.apache.log4j.varia.LevelRangeFilter">
14+
<param name="levelMin" value="debug"/>
15+
<param name="levelMax" value="fatal"/>
16+
<param name="AcceptOnMatch" value="true"/>
17+
</filter>
18+
</appender>
19+
20+
21+
<appender name="ALL" class="org.apache.log4j.DailyRollingFileAppender">
22+
<param name="File" value="${user.dir}/logs/javatool-log4j-all"/>
23+
<param name="Append" value="true"/>
24+
<!-- 每天重新生成日志文件 -->
25+
<param name="DatePattern" value="'-'yyyy-MM-dd'.log'"/>
26+
<!-- 每小时重新生成日志文件 -->
27+
<!--<param name="DatePattern" value="'-'yyyy-MM-dd-HH'.log'"/>-->
28+
<layout class="org.apache.log4j.PatternLayout">
29+
<param name="ConversionPattern"
30+
value="%d{yyyy-MM-dd HH:mm:ss,SSS\} [%-5p] [%t] %c{36\}.%M - %m%n"/>
31+
</layout>
32+
</appender>
33+
34+
<appender name="ELK" class="org.apache.log4j.net.SocketAppender">
35+
<param name="remoteHost" value="192.168.28.32" />
36+
<param name="port" value="9252" />
37+
<param name="Threshold" value="TRACE" />
38+
<param name="ReconnectionDelay" value="1000" />
39+
<param name="LocationInfo" value="true" />
40+
</appender>
41+
42+
<!-- 指定logger的设置,additivity指示是否遵循缺省的继承机制-->
43+
<logger name="io.github.dunwu.javatool" additivity="false">
44+
<level value="trace"/>
45+
<appender-ref ref="STDOUT"/>
46+
<appender-ref ref="ALL"/>
47+
<appender-ref ref="ELK"/>
48+
</logger>
49+
50+
<!-- 根logger的设置-->
51+
<root>
52+
<level value="warn"/>
53+
<appender-ref ref="STDOUT"/>
54+
</root>
55+
</log4j:configuration>

0 commit comments

Comments
 (0)