diff --git a/src/logger.jmc b/src/logger.jmc new file mode 100644 index 0000000..e8e88ce --- /dev/null +++ b/src/logger.jmc @@ -0,0 +1,90 @@ +@lazy +function logger(type, caller, message) { + $tmp_logger = false; + $tmp_type = $type; + if ($temp_type > 6 || $temp_type < 1) { + say "The log type requested does not exist. Please find the caller ($caller) and resolve this issue."; + } + if ($temp_type >= $log_level || $logger) { $tmp_logger = $type; } + switch($tmp_logger) { + case 5: + say "FATAL: ($caller) $message"; + case 4: + say "ERROR: ($caller) $message"; + case 3: + say "WARNING: ($caller) $message"; + case 2: + say "INFO: ($caller) $message"; + case 1: + say "DEBUG: ($caller) $message"; + default: + return 0; + } +} + +class logger { + @add(__load__) + function __init__() { + if (!$log_level) { + $log_level = 3; + } else if ($log_level > 5) { + say "The log level was too high. Resetting to default value."; + $log_level = 3; + } + + execute run { + $say "The log level is set to $(0)."; + } with [$log_level]; + + + if (!$logger) { + $logger = false; + } else if ($logger) { + say "Debug logging is enabled. You should now see a test log message:"; + logger(2, logger, "This is a test. Logging appears to be working as expected!"); + } else { + say "This is not a log message. There appears to be something wrong with the logger. It has not been detected as `!true` or `true`. Please investigate."; + } + } + + function toggle() { + switch($logger) { + case 0: + $logger = true; + this.status(); + case 1: + $logger = false; + this.status(); + } + } + + function status() { + switch($logger) { + case 0: + say "Debug logging is disabled"; + case 1: + say "Debug logging is enabled"; + } + } + + function test_fatal() { + logger(5, logger, "This is a test"); + } + + function test_error() { + logger(4, logger, "This is a test"); + } + + function test_warning() { + logger(3, logger, "This is a test"); + } + + function test_info() { + logger(2, logger, "This is a test"); + } + + function test_debug() { + logger(1, logger, "This is a test"); + } + +}