废话不多,直接上干货!!!
1.pom.xml应用logstash-gelf的依赖:
<!-- https://mvnrepository.com/artifact/biz.paluch.logging/logstash-gelf -->
<dependency>
<groupId>biz.paluch.logging</groupId>
<artifactId>logstash-gelf</artifactId>
<version>1.15.1</version>
</dependency>
2.配置配置log4j2的xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<!-- 控制台输出 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %msg%n"/>
</Console>
<!-- GELF 输出到 Logstash/Graylog -->
<Gelf name="gelf" host="udp:localhost" port="12201" version="1.1"
extractStackTrace="true" filterStackTrace="true"
mdcProfiling="true" includeFullMdc="true"
originHost="%host{fqdn}">
<Field name="timestamp" pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}" />
<Field name="level" pattern="%p" />
<Field name="className" pattern="%C" />
<Field name="methodName" pattern="%M" />
<Field name="lineNumber" pattern="%L" />
<Field name="threadName" pattern="%t" />
<Field name="loggerName" pattern="%c" />
<Field name="app_name" literal="ai-log" />
</Gelf>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="gelf"/>
</Root>
</Loggers>
</Configuration>
3.配置logstash的conf文件:gelf-input.conf
input {
gelf {
host => "0.0.0.0"
port => 12201
type => "gelf"
}
}
filter {
# 可选:对日志进行额外处理
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:log_message}" }
}
mutate {
add_field => {
"index_name" => "%{app_name}-%{+YYYY-MM-dd}"
}
}
}
output {
# 输出到 Elasticsearch
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{index_name}"
}
# 或输出到控制台(调试用)
stdout { codec => rubydebug }
}
4.查看logstash的日志展示:
5.kibana中查看日志截图: