From 3ff1bded99bb72c131d6047302bc3fa012a2c7ce Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 12:56:31 -0500 Subject: [PATCH 01/15] Create logging module --- src/logger.jmc | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/logger.jmc diff --git a/src/logger.jmc b/src/logger.jmc new file mode 100644 index 0000000..6ef3601 --- /dev/null +++ b/src/logger.jmc @@ -0,0 +1,63 @@ +@lazy +function logger(type, message) { + $tmp_logger = false; + if ($logger) { $tmp_logger = $type; } + switch($tmp_logger) { + case 5: + say "FATAL: $message"; + case 4: + say "ERROR: $message"; + case 3: + say "WARNING: $message"; + case 2: + say "INFO: $message"; + case 1: + say "DEBUG: $message"; + default: + return 0; + } +} + +class logger { + @add(__load__) + function __init__() { + if (!$logger) { + $logger = false; + } else if ($logger) { + say "Logging is enabled. You should now see a test log message:"; + logger(2, "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 logging_toggle() { + switch($logger) { + case 0: + $logger = true; + case 1: + $logger = false; + } + } + + function test_fatal() { + logger(5, "This is a test"); + } + + function test_error() { + logger(4, "This is a test"); + } + + function test_warning() { + logger(3, "This is a test"); + } + + function test_info() { + logger(2, "This is a test"); + } + + function test_debug() { + logger(1, "This is a test"); + } + +} From 3b6990be85040a7592b3abbb5231f9a058782a20 Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 13:18:00 -0500 Subject: [PATCH 02/15] Rename logger toggle function --- src/logger.jmc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/logger.jmc b/src/logger.jmc index 6ef3601..e8f7151 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -31,7 +31,7 @@ class logger { } } - function logging_toggle() { + function toggle() { switch($logger) { case 0: $logger = true; From 58ef0a251e889e9e7c3870000c66c9ed9f94acab Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 13:21:03 -0500 Subject: [PATCH 03/15] Add logger status function --- src/logger.jmc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/logger.jmc b/src/logger.jmc index e8f7151..59cfcec 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -40,6 +40,15 @@ class logger { } } + function status() { + switch($logger) { + case 0: + printf("Logging is disabled"); + case 1: + printf("Logging is enabled"); + } + } + function test_fatal() { logger(5, "This is a test"); } From f4d444635b9566b08dacc601fcb38f46b5c99a50 Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 13:36:22 -0500 Subject: [PATCH 04/15] Revert logger status from printf to say --- src/logger.jmc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/logger.jmc b/src/logger.jmc index 59cfcec..a0dbec2 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -43,9 +43,9 @@ class logger { function status() { switch($logger) { case 0: - printf("Logging is disabled"); + say "Logging is disabled"; case 1: - printf("Logging is enabled"); + say "Logging is enabled"; } } From daa70062f65630f30df664140acd2c5fd6835fb3 Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 13:39:47 -0500 Subject: [PATCH 05/15] Show status after toggling logger --- src/logger.jmc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/logger.jmc b/src/logger.jmc index a0dbec2..280dba4 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -35,8 +35,10 @@ class logger { switch($logger) { case 0: $logger = true; + this.status(); case 1: $logger = false; + this.status(); } } From 5468fa9605872c2fc56228d2d89da64a0c3801ef Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 14:43:14 -0500 Subject: [PATCH 06/15] Add "caller" paramteter to logger --- src/logger.jmc | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/logger.jmc b/src/logger.jmc index 280dba4..2184bd1 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -1,18 +1,18 @@ @lazy -function logger(type, message) { +function logger(type, caller, message) { $tmp_logger = false; if ($logger) { $tmp_logger = $type; } switch($tmp_logger) { case 5: - say "FATAL: $message"; + say "FATAL: ($caller) $message"; case 4: - say "ERROR: $message"; + say "ERROR: ($caller) $message"; case 3: - say "WARNING: $message"; + say "WARNING: ($caller) $message"; case 2: - say "INFO: $message"; + say "INFO: ($caller) $message"; case 1: - say "DEBUG: $message"; + say "DEBUG: ($caller) $message"; default: return 0; } @@ -25,7 +25,7 @@ class logger { $logger = false; } else if ($logger) { say "Logging is enabled. You should now see a test log message:"; - logger(2, "This is a test. Logging appears to be working as expected!"); + 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."; } @@ -52,23 +52,23 @@ class logger { } function test_fatal() { - logger(5, "This is a test"); + logger(5, "logger", "This is a test"); } function test_error() { - logger(4, "This is a test"); + logger(4, "logger", "This is a test"); } function test_warning() { - logger(3, "This is a test"); + logger(3, "logger", "This is a test"); } function test_info() { - logger(2, "This is a test"); + logger(2, "logger", "This is a test"); } function test_debug() { - logger(1, "This is a test"); + logger(1, "logger", "This is a test"); } } From 28d85c4e0267856cf493c32f7cd74e62a58a3824 Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 14:47:28 -0500 Subject: [PATCH 07/15] Remove double-quotes from log messages --- src/logger.jmc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/logger.jmc b/src/logger.jmc index 2184bd1..4f50f2d 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -25,7 +25,7 @@ class logger { $logger = false; } else if ($logger) { say "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!"); + 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."; } @@ -52,23 +52,23 @@ class logger { } function test_fatal() { - logger(5, "logger", "This is a test"); + logger(5, logger, This is a test); } function test_error() { - logger(4, "logger", "This is a test"); + logger(4, logger, This is a test); } function test_warning() { - logger(3, "logger", "This is a test"); + logger(3, logger, This is a test); } function test_info() { - logger(2, "logger", "This is a test"); + logger(2, logger, This is a test); } function test_debug() { - logger(1, "logger", "This is a test"); + logger(1, logger, This is a test); } } From 686592df339aa6e9ec92cca847163087848f3c9d Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 14:51:06 -0500 Subject: [PATCH 08/15] Add double-quotes back to log messages Double-quotes were initially removed for aesthetic reasons. However, JMC collapses whitespace, resulting in mangled message output. Double quotes are converted to single quotes in compliled output. --- src/logger.jmc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/logger.jmc b/src/logger.jmc index 4f50f2d..10e3457 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -25,7 +25,7 @@ class logger { $logger = false; } else if ($logger) { say "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!); + 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."; } @@ -52,23 +52,23 @@ class logger { } function test_fatal() { - logger(5, logger, This is a test); + logger(5, logger, "This is a test"); } function test_error() { - logger(4, logger, This is a test); + logger(4, logger, "This is a test"); } function test_warning() { - logger(3, logger, This is a test); + logger(3, logger, "This is a test"); } function test_info() { - logger(2, logger, This is a test); + logger(2, logger, "This is a test"); } function test_debug() { - logger(1, logger, This is a test); + logger(1, logger, "This is a test"); } } From 68d4b8c25dd125eb84c387202d7996d4c4616506 Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 15:32:05 -0500 Subject: [PATCH 09/15] Add log level threshold Set default log level to 3, or ERROR. Ensure log level isn't overriden on reload. Add errors if log level is misconfigured. --- src/logger.jmc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/logger.jmc b/src/logger.jmc index 10e3457..0b42f16 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -1,7 +1,8 @@ @lazy function logger(type, caller, message) { $tmp_logger = false; - if ($logger) { $tmp_logger = $type; } + $tmp_type = $type; + if ($temp_type >= $log_level) { $tmp_logger = $type; } switch($tmp_logger) { case 5: say "FATAL: ($caller) $message"; @@ -21,10 +22,19 @@ function logger(type, caller, message) { 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; + } + + say "Log level set to '$log_level'."; + if (!$logger) { $logger = false; } else if ($logger) { - say "Logging is enabled. You should now see a test log message:"; + 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."; From cf55f238ff7bab875489642ef56d2baa1444f205 Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 15:32:46 -0500 Subject: [PATCH 10/15] Add logger error for invalid type paramater --- src/logger.jmc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/logger.jmc b/src/logger.jmc index 0b42f16..c037c93 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -1,5 +1,8 @@ @lazy function logger(type, caller, message) { + if ($type > 6 || $type < 1) { + say "The log type requested does not exist. Please find the caller ($caller) and resolve this issue."; + } $tmp_logger = false; $tmp_type = $type; if ($temp_type >= $log_level) { $tmp_logger = $type; } From accd7463896226a962c6f67c0461c6e0d5af115d Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 15:39:21 -0500 Subject: [PATCH 11/15] Change logger type check to use temp var --- src/logger.jmc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/logger.jmc b/src/logger.jmc index c037c93..c3c43b8 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -1,10 +1,10 @@ @lazy function logger(type, caller, message) { - if ($type > 6 || $type < 1) { - say "The log type requested does not exist. Please find the caller ($caller) and resolve this issue."; - } $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: From d30418d57a3d6baf5f179b5e156bcbd9317a9fc3 Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 16:49:41 -0500 Subject: [PATCH 12/15] Fix log level message to display current log level --- src/logger.jmc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/logger.jmc b/src/logger.jmc index c3c43b8..378759e 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -32,7 +32,10 @@ class logger { $log_level = 3; } - say "Log level set to '$log_level'."; + execute run { + say "The log level is set to $(0)."; + } with [$log_level]; + if (!$logger) { $logger = false; From 7bfa12b539f1fea5e2063925d2e596fab90ff388 Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 16:52:47 -0500 Subject: [PATCH 13/15] Turn line into macro command --- src/logger.jmc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/logger.jmc b/src/logger.jmc index 378759e..a25a7b0 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -33,7 +33,7 @@ class logger { } execute run { - say "The log level is set to $(0)."; + $say "The log level is set to $(0)."; } with [$log_level]; From 9117c846531210621dbb0b0a2e3e410eeea48a66 Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 16:55:48 -0500 Subject: [PATCH 14/15] Enable debug logging to bypass log level --- src/logger.jmc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/logger.jmc b/src/logger.jmc index a25a7b0..cf90bd4 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -5,7 +5,7 @@ function logger(type, caller, message) { 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; } + if ($temp_type >= $log_level || $logger) { $tmp_logger = $type; } switch($tmp_logger) { case 5: say "FATAL: ($caller) $message"; From b6e1d224e50b452f67b48ef463c65ef1c924907b Mon Sep 17 00:00:00 2001 From: themodernhakr Date: Tue, 11 Mar 2025 17:12:53 -0500 Subject: [PATCH 15/15] Fix debug logging messages --- src/logger.jmc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/logger.jmc b/src/logger.jmc index cf90bd4..e8e88ce 100644 --- a/src/logger.jmc +++ b/src/logger.jmc @@ -61,9 +61,9 @@ class logger { function status() { switch($logger) { case 0: - say "Logging is disabled"; + say "Debug logging is disabled"; case 1: - say "Logging is enabled"; + say "Debug logging is enabled"; } }