【问题标题】:How to add a static field to gelf logstash appender in properties file? biz.paluch.logging如何在属性文件中向 gelf logstash appender 添加静态字段? biz.paluch.logging
【发布时间】:2021-04-19 11:10:11
【问题描述】:

我使用GELF-logstash appenderlog4j2 作为日志附加器,通过logstash 将日志从我的应用程序发送到ElasticSearch/Kibana。
在每条日志消息中,我想配置一个静态字段,即我的应用程序部署到的区域,该字段是从一个环境变量中收集的,该变量因应用程序运行所在的区域而异。

我发现 XML 配置支持静态文字,如下所示:<Field name="fieldName1" literal="your literal value" /> https://logging.paluch.biz/examples/log4j-2.x.html 但如果可能的话,我想保留我的基于 log4j2.properties 文件的配置,但找不到在那里添加静态文字的文档。

【问题讨论】:

    标签: java logstash log4j2 gelf


    【解决方案1】:

    是的,这是可能的。您可以使用预定义字段facility,或在log4j2.properties 文件中定义任意数量的自定义静态字段:

    # required configuration for GELF
    appender.gelf.type = Gelf
    appender.gelf.name = GELF
    appender.gelf.host = ${sys:LOG_HOST}
    appender.gelf.port = ${sys:LOG_PORT}
    
    # pre-defined field facility
    appender.gelf.facility = a_static_value
    
    # custom static field using environment variable
    appender.gelf.environment.type = Field
    appender.gelf.environment.name = environment_logging_field_name
    appender.gelf.environment.literal = ${sys:ENV_VAR_NAME}
    
    # custom static field with static value
    appender.gelf.secondfield.type = Field
    appender.gelf.secondfield.name = fieldName
    appender.gelf.secondfield.literal = your_value_here
    

    【讨论】:

    • 您不能使用系统属性查找来访问环境变量。 ${sys:ENV_VAR_NAME} 必须是 ${env:ENV_VAR_NAME}
    • 在我的机器上工作;)。但我认为你仍然是对的,env 听起来更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多