logstash-plugins / logstash-output-file

Apache License 2.0
23 stars 53 forks source link

Logstash exits if attempting to create directory when file exists in path #45

Closed purbon closed 8 years ago

purbon commented 8 years ago

From: https://github.com/elastic/logstash/issues/5577


input {
  beats {
    port => 5044
  }
}

output {
  file {
    path => "/var/www/html/logs/%{host}/%{+YYYY-MM-dd}"
    codec => line { format => "%{message}" }
  }
}

Modified to utilize directory of same name as existing file.

input {
  beats {
    port => 5044
  }
}

output {
  file {
    path => "/var/www/html/logs/%{host}/%{+YYYY-MM-dd}/%{source}"
    codec => line { format => "%{message}" }
  }
}

Logstash appears to exit with the following info. Expected situation would be to throw an error on the console, but not exit the process.

Errno::EEXIST: File exists - /var/www/html/logs/nfvsdn-06/2016-06-30
                 mkdir at org/jruby/RubyDir.java:458
              fu_mkdir at /opt/logstash/vendor/jruby/lib/ruby/1.9/fileutils.rb:247
               mkdir_p at /opt/logstash/vendor/jruby/lib/ruby/1.9/fileutils.rb:221
          reverse_each at org/jruby/RubyArray.java:1693
               mkdir_p at /opt/logstash/vendor/jruby/lib/ruby/1.9/fileutils.rb:219
                  each at org/jruby/RubyArray.java:1613
               mkdir_p at /opt/logstash/vendor/jruby/lib/ruby/1.9/fileutils.rb:205
                  open at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-file-2.2.5/lib/logstash/outputs/file.rb:253
           write_event at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-file-2.2.5/lib/logstash/outputs/file.rb:162
                  call at org/jruby/RubyProc.java:281
                encode at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-codec-line-2.1.2/lib/logstash/codecs/line.rb:54
               receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-file-2.2.5/lib/logstash/outputs/file.rb:129
         multi_receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/outputs/base.rb:83
                  each at org/jruby/RubyArray.java:1613
         multi_receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/outputs/base.rb:83
  worker_multi_receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/output_delegator.rb:130
         multi_receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/output_delegator.rb:114
          output_batch at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/pipeline.rb:301
                  each at org/jruby/RubyHash.java:1342
          output_batch at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/pipeline.rb:301
           worker_loop at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/pipeline.rb:232
         start_workers at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/pipeline.rb:201