summaryrefslogtreecommitdiffstats
path: root/src/lisiblestd/log.c
diff options
context:
space:
mode:
authorClement Sibille <clements+git@lisible.xyz>2024-05-20 14:33:27 +0900
committerClement Sibille <clements+git@lisible.xyz>2024-05-20 14:33:27 +0900
commit06adbda82803d81f565eb72b42f35339eb5c2720 (patch)
tree4498dc8c264ecfa0c95c312aa397895ff7a31367 /src/lisiblestd/log.c
parent6f6f70a51538783625c17cdcf21091d53fe45638 (diff)
Allow to choose the log level at runtime
Diffstat (limited to 'src/lisiblestd/log.c')
-rw-r--r--src/lisiblestd/log.c45
1 files changed, 40 insertions, 5 deletions
diff --git a/src/lisiblestd/log.c b/src/lisiblestd/log.c
index a28d202..2548fd5 100644
--- a/src/lisiblestd/log.c
+++ b/src/lisiblestd/log.c
@@ -1,18 +1,53 @@
#include "log.h"
+#include <stdlib.h>
+#include <string.h>
+
+LogLevel lstd_log_level = LogLevel_Info;
+
+void lstd_log_init(void) {
+ const char *log_level_str = getenv("LSTD_LOG");
+ if (log_level_str) {
+ lstd_log_level = log_level_from_str(log_level_str);
+ }
+}
+
+const char *LSTD_LOG_LEVEL_STR_TRACE = "TRACE";
+const char *LSTD_LOG_LEVEL_STR_DEBUG = "DEBUG";
+const char *LSTD_LOG_LEVEL_STR_WARN = "WARN";
+const char *LSTD_LOG_LEVEL_STR_ERROR = "ERROR";
+const char *LSTD_LOG_LEVEL_STR_INFO = "INFO";
const char *log_level_to_str(LogLevel log_level) {
switch (log_level) {
case LogLevel_Trace:
- return "TRACE";
+ return LSTD_LOG_LEVEL_STR_TRACE;
case LogLevel_Debug:
- return "DEBUG";
+ return LSTD_LOG_LEVEL_STR_DEBUG;
case LogLevel_Warn:
- return "WARN";
+ return LSTD_LOG_LEVEL_STR_WARN;
case LogLevel_Error:
- return "ERROR";
+ return LSTD_LOG_LEVEL_STR_ERROR;
case LogLevel_Info:
default:
- return "INFO";
+ return LSTD_LOG_LEVEL_STR_INFO;
break;
}
}
+
+LogLevel log_level_from_str(const char *str) {
+ if (strncmp(str, LSTD_LOG_LEVEL_STR_TRACE,
+ strlen(LSTD_LOG_LEVEL_STR_TRACE)) == 0) {
+ return LogLevel_Trace;
+ } else if (strncmp(str, LSTD_LOG_LEVEL_STR_DEBUG,
+ strlen(LSTD_LOG_LEVEL_STR_DEBUG)) == 0) {
+ return LogLevel_Debug;
+ } else if (strncmp(str, LSTD_LOG_LEVEL_STR_WARN,
+ strlen(LSTD_LOG_LEVEL_STR_WARN)) == 0) {
+ return LogLevel_Warn;
+ } else if (strncmp(str, LSTD_LOG_LEVEL_STR_ERROR,
+ strlen(LSTD_LOG_LEVEL_STR_ERROR)) == 0) {
+ return LogLevel_Error;
+ }
+
+ return LogLevel_Info;
+}
Go back to lisible.xyz