aserafin / grape_logging

Request logging for Grape!
MIT License
147 stars 76 forks source link

Using GrapeLogging::Formatters logs does not trigger Logstash file input #51

Closed arthurstomp closed 3 years ago

arthurstomp commented 6 years ago

Hi there,

I was doing some tests with grape_logging and Logstash, using GrapeLogging::Formatters::Logstash, and i encountered a problem. My logs where been written into the log file but Logstash wasn't getting any of them.

That also happened when i used GrapeLogging::Formatters::Json.

Using the Default formatter doesn't cause this problem.

logstash.conf

input {
  file {
    type => "test"
    path =>"/tmp/log/*.log"
  }
}
filter {

}
output {
  elasticsearch {
    index => "logstash"
    hosts => ["localhost:9200"]
  }
  stdout { }
}

api.rb

class API < Grape::API
  format :json
  log_file = File.open('/tmp/log/test.log', 'a+')
  log_file.sync = true
  logger Logger.new GrapeLogging::MultiIO.new(STDOUT, log_file)
  logger.formatter = GrapeLogging::Formatters::Logstash.new
  use GrapeLogging::Middleware::RequestLogger, {
    logger: logger,
    include: [ GrapeLogging::Loggers::Response.new,
                    GrapeLogging::Loggers::FilterParameters.new,
                    GrapeLogging::Loggers::ClientEnv.new,
                    GrapeLogging::Loggers::RequestHeaders.new ]
   }
end