module JosieHealth module Utils module Log @@debug_enabled : Bool = ENV.has_key?("DEBUG") || ENV["LOG_LEVEL"]? == "debug" @@prefix : String = "" def self.debug_enabled? : Bool @@debug_enabled end def self.enable_debug @@debug_enabled = true end def self.disable_debug @@debug_enabled = false end def self.prefix=(value : String) @@prefix = value end def self.prefix : String @@prefix end private def self.format(level : String, message : String) : String timestamp = Time.utc.to_s("%Y-%m-%d %H:%M:%S") if @@prefix.empty? "[#{timestamp}] [#{level}] #{message}" else "[#{timestamp}] [#{@@prefix}] [#{level}] #{message}" end end def self.debug(message : String) return unless @@debug_enabled STDERR.puts format("DEBUG", message) end def self.debug(context : String, message : String) return unless @@debug_enabled STDERR.puts format("DEBUG", "[#{context}] #{message}") end def self.info(message : String) STDERR.puts format("INFO", message) end def self.info(context : String, message : String) STDERR.puts format("INFO", "[#{context}] #{message}") end def self.warn(message : String) STDERR.puts format("WARN", message) end def self.warn(context : String, message : String) STDERR.puts format("WARN", "[#{context}] #{message}") end def self.error(message : String) STDERR.puts format("ERROR", message) end def self.error(context : String, message : String) STDERR.puts format("ERROR", "[#{context}] #{message}") end def self.error(message : String, ex : Exception) STDERR.puts format("ERROR", "#{message}: #{ex.message}") STDERR.puts ex.backtrace.join("\n") if @@debug_enabled && ex.backtrace? end end end end