java需要 有专门的日志配置文件一般和application.yaml放在同级目录,名称叫logback-spring.xml

在logback-spring.xml中增加将日志传输到logstash的配置
<property name="SERVICE_NAME" value="api-gateway" /> #配置公共变量
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>10.1.60.9:30016</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"service":"${SERVICE_NAME}", "env":"${profiles.active}"}</customFields> #为日志增加服务名称和环境字段,环境字段变量是执行java命令时定义传入
</encoder>
</appender> #配置传输日志到logstash
<!-- 开发环境配置 -->
<springProfile name="dev">
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</springProfile>
<!-- 测试环境配置 -->
<springProfile name="test">
<root level="INFO">
<appender-ref ref="FILE" />
<appender-ref ref="LOGSTASH" /> #配置在test环境中日志传给logstash
</root>
</springProfile>
<!-- 生产环境配置 -->
<springProfile name="prd">
<root level="INFO">
<appender-ref ref="FILE" />
<appender-ref ref="LOGSTASH" />
</root>
</springProfile>
配置依赖,需要在公共配置文件中配置该依赖pom.xml文件

<dependencyManagement>
<dependencies>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.6</version> #版本需要根据日志插件使用的版本来决定
</dependency>
</dependencies>
</dependencyManagement>
除了该pom.xml,还要在具体使用的模块中配置pom.xml文件,使用该依赖

<dependencies>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
</dependency>
</dependencies>
java端配置完成
配置logstash
input {
tcp {
port => 5044
#设置日志收集端口
codec => json_lines #java的json日志是一行一行的,所以使用json_lines
}
}
filter {
mutate {
remove_field => ["host","port"] #将json日志中的host、prot项去掉
}
}
output {
#stdout {
# #该被注释的配置项用于将收集的日志输出到logstash的日志中,主要用于测试看收集的日志中包含哪些内容
# codec => rubydebug
#}
elasticsearch {
hosts => "elasticsearch.elk:9200"
index => "%{env}-%{service}-%{+YYYY.MM.dd}" #使用日志中的变量命名
}
}
954

被折叠的 条评论
为什么被折叠?



