# frozen_string_literal: true

require "logstash-logger"

class DiscourseLogstashLogger
  def self.logger(uri:, type:)
    # See Discourse.os_hostname
    hostname =
      begin
        require "socket"
        Socket.gethostname
      rescue => e
        `hostname`.chomp
      end

    LogStashLogger.new(
      uri: uri,
      sync: true,
      customize_event: ->(event) do
        event["hostname"] = hostname
        event["severity_name"] = event["severity"]
        event["severity"] = Object.const_get("Logger::Severity::#{event["severity"]}")
        event["type"] = type
        event["pid"] = Process.pid
      end,
    )
  end
end