lib/raykit/logevent.rb



# frozen_string_literal: true


require "json"

module Raykit
  # :verbose, :debug, :information, :error, :fatal

  class LogEvent < Hash
    def initialize(level, messageTemplate, properties)
      self["Timestamp"] = DateTime.now.iso8601
      self["Level"] = level
      self["Message"] = messageTemplate
      self["MessageTemplate"] = messageTemplate
      properties["MachineName"] = Raykit::Environment.machine unless properties.key?("MachineName")
      properties["UserName"] = Raykit::Environment.user unless properties.key?("UserName")
      properties["RakeDirectory"] = ::Rake.application.original_dir
      self["Properties"] = properties
    end

    def to_seq
      # puts '---to_seq---'

      # puts self['Message']

      unless ENV["SEQ_SERVER"].nil?
        cmd_str = "seqcli log -m \"#{self["Message"].gsub('"', "")}\" -l #{self["Level"]} -s #{ENV["SEQ_SERVER"]}"
        self["Properties"].each do |k, v|
          cmd_str += " -p \"#{k}=#{v}\""
        end
        # puts '---executing---'

        # puts cmd_str

        puts `#{cmd_str}`
      end
    end
  end
end

# {

#	"Timestamp": "2021-10-06T06:09:25.5275817-06:00",

#	"Level": "Information",

#	"MessageTemplate": "MachineName     {machine}",

#	"Properties": {

#		"machine": "BLUEFIN",

#		"SourceContext": "cslogging.Program",

#		"ThreadId": 1,

#		"ProcessId": 16764,

#		"ProcessName": "cs-logging",

#		"MachineName": "\"BLUEFIN\"",

#		"UserName": "\"loupa\"",

#		"OS": "Windows_NT"

#	}

# }