@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) { $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 "Logging is disabled"; case 1: say "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"); } }