Files
2025-09-29 00:52:08 +02:00

103 lines
3.1 KiB
Ruby
Executable File

module RsgLog
require 'Logger'
require 'singleton'
require 'fileutils'
class MultiDelegator
def initialize(*targets)
@targets = targets
end
def self.delegate(*methods)
methods.each do |m|
define_method(m) do |*args|
@targets.map { |t| t.send(m, *args) }
end
end
self
end
class <<self
alias to new
end
end
class RsgLog
include Singleton
attr_accessor :log
attr_accessor :logFile
attr_accessor :isInitialized
def SetParameters(generatedPath, currTime, severity)
logFileHandle = File.open(generatedPath + "/" + currTime + ".log", "w")
@log = Logger.new MultiDelegator.delegate(:write, :close).to(STDOUT)
@logFile = Logger.new MultiDelegator.delegate(:write, :close).to(logFileHandle)
puts "#{generatedPath}"
logFileHandle.write("woot")
@log.datetime_format = "%Y%m%d-%H:%M:%S"
if(defined?(LOG_FILE_SEVERITY_LEVEL)).nil?
@log.level = Logger::INFO
else
@log.level = LOG_SEVERITY_LEVEL
end
@log.formatter = proc do |serverity, time, progname, msg|
"[#{time.strftime(@log.datetime_format)}]\t[#{serverity}]\t#{msg}"
end
@logFile.datetime_format = "%Y%m%d-%H:%M:%S"
if (defined?(LOG_FILE_SEVERITY_LEVEL)).nil?
@logFile.level = Logger::DEBUG
else
@logFile.level = LOG_FILE_SEVERITY_LEVEL
end
@logFile.formatter = proc do |serverity, time, progname, msg|
"[#{time.strftime(@logFile.datetime_format)}]\t[#{serverity}]\t#{msg}"
end
@isInitialized = true
end
def checkInitialized
if(!isInitialized)
raise "RsgLog attempting to be used without being initialized. Please call the SetParameters() function in the accessing script. Exiting"
end
end
def info(msg, newline=true)
checkInitialized()
if newline == true
msg = msg + "\n"
end
@log.info(msg)
@logFile.info(msg)
end
def debug(msg, newline=true)
checkInitialized()
if newline == true
msg = msg + "\n"
end
@log.debug(msg)
@logFile.debug(msg)
end
def warn(msg, newline=true)
checkInitialized()
if newline == true
msg = msg + "\n"
end
@log.warn(msg)
@logFile.warn(msg)
end
def error(msg, newline=true)
checkInitialized()
if newline == true
msg = msg + "\n"
end
@log.error(msg)
@logFile.error(msg)
end
def SetLevel(level)
@log.level = level
end
end
end