dwbutler / logstash-logger

Ruby logger that writes logstash events
MIT License
456 stars 118 forks source link

Allow passing integers as tags to TaggedLogging::Formatter #152

Open maciek-rr opened 5 years ago

maciek-rr commented 5 years ago

Logstash and Elasticsearch accept integer values for keyword type fields, such as tags.

LogStashLogger filters tags, not to pass nils or empty strings as tags to Logstash. However, the empty string check does fail on everything that is not a string, and it does so in not a very friendly manner:

irb(main):005:0> stdout_logger.tagged('test', 10) {}
Traceback (most recent call last):
        5: from /Users/irvingwashington/.rubies/ruby-2.5.3/bin/irb:11:in `<main>'
        4: from (irb):5
        3: from /Users/irvingwashington/.gem/ruby/2.5.3/gems/logstash-logger-0.25.1/lib/logstash-logger/tagged_logging.rb:5:in `tagged'
        2: from /Users/irvingwashington/.gem/ruby/2.5.3/gems/logstash-logger-0.25.1/lib/logstash-logger/tagged_logging.rb:18:in `tagged'
        1: from /Users/irvingwashington/.gem/ruby/2.5.3/gems/logstash-logger-0.25.1/lib/logstash-logger/tagged_logging.rb:18:in `ensure in tagged'
NoMethodError (undefined method `size' for nil:NilClass)

This PR makes that check happen only on objects that respond to #empty?.