Quarkus GELF日志配置应用名称与版本及避免重复配置
Quarkus GELF 日志携带应用名与版本的优化配置方案
一、避免版本与名称重复配置:复用Maven属性
通过Maven资源过滤+占位符引用,直接复用pom.xml中的配置,彻底告别重复维护。
1. 开启Maven资源过滤
在pom.xml的<build>节点下添加配置,确保application.yml中的Maven占位符在构建时被自动替换:
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>application.yml</include> </includes> </resource> </resources> <!-- 保留原有build配置 --> </build>
2. 在application.yml中引用Maven属性
直接用${project.artifactId}(对应pom中的artifactId)作为应用名,${project.version}作为版本,配置GELF的额外字段:
quarkus: log: level: INFO handler: gelf: enabled: true host: localhost port: 12201 include-log-message-parameters: false additional-field: app_name: value: "${project.artifactId}" type: string app_version: value: "${project.version}" type: string
构建后,占位符会自动替换为pom.xml中对应的实际值,无需手动同步版本或名称。
二、更灵活的配置:复用Quarkus内置应用属性
Quarkus默认会从pom.xml加载quarkus.application.name(默认值为artifactId)和quarkus.application.version(默认值为pom的version),你可以直接在GELF配置中引用这些内置属性:
quarkus: # 可选:若需自定义应用名,可在此覆盖默认的artifactId # application: # name: "custom-testApp" log: level: INFO handler: gelf: enabled: true host: localhost port: 12201 include-log-message-parameters: false additional-field: app_name: value: "${quarkus.application.name}" type: string app_version: value: "${quarkus.application.version}" type: string
这种方式的优势是:如果后续通过环境变量或其他方式修改quarkus.application.name/version,日志中的字段会自动同步,无需修改GELF配置。
三、关于之前配置未生效的说明
你添加的quarkus.application.name和version本身是生效的,但GELF日志组件不会自动将这些Quarkus内置属性添加到日志字段中,必须通过additional-field明确配置引用这些属性,才能让它们出现在发送给Logstash的GELF日志里。
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

