【问题标题】:error = undefined method `gsub' for nil:NilClass> td-agent错误 = nil:NilClass> td-agent 的未定义方法“gsub”
【发布时间】:2021-09-28 19:07:59
【问题描述】:

我正在尝试使用@type record_transformer 来屏蔽密码,因为我的某些应用程序日志语句没有消息,因为这低于 td-agent 日志文件中的错误 有什么可以解决这个问题的。 如果找不到消息字段,如何忽略它。

2021-09-28 18:05:15.751529402 +0000 fluent.warn: {"error":"#<RuntimeError: failed to expand `record[\"message\"].gsub(/[Pp]assword*([^,]*)/,'******').gsub(/([Aa]uthorization\\s*.\\s*[Bb]earer\\s)[\\w\\.\\-^]+/,'******').gsub(/([Aa]uthorization_ml\\s*.\\s*[Bb]earer\\s)[\\w\\.\\-^]+/,'******')` : error = undefined method `gsub' for nil:NilClass>","location":"/opt/td-agent/embedded/lib/ruby/gems/2.4.0/gems/fluentd-1.11.1/lib/fluent/plugin/filter_record_transformer.rb:310:in `rescue in expand'","

【问题讨论】:

    标签: fluentd td-agent


    【解决方案1】:

    调用#gsub 的对象(可能是字符串)是nil。寻找到达 record_transformer 的丢失数据 - 可能是返回 nil 的不正确哈希查找?

    您可以在每个对象上使用 #nil? 方法来保护 nil。

    if obj.nil?
      # do thing
    end
    

    【讨论】:

    • 谢谢,有没有示例配置?过滤器配置 @type record_transformer enable_ruby message ${record["message"].gsub(/[Pp]assword*([^,]*)/,'****** ').gsub(/([Aa]授权\s*.\s*[Bb]earer\s)[\w\.\-^]+/,'******').gsub(/ ([Aa]授权_ml\s*.\s*[Bb]earer\s)[\w\.\-^]+/,'******')}
    猜你喜欢
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多