diff options
| author | Clement Sibille <clements+git@lisible.xyz> | 2024-05-20 14:33:27 +0900 |
|---|---|---|
| committer | Clement Sibille <clements+git@lisible.xyz> | 2024-05-20 14:33:27 +0900 |
| commit | 06adbda82803d81f565eb72b42f35339eb5c2720 (patch) | |
| tree | 4498dc8c264ecfa0c95c312aa397895ff7a31367 /src/lisiblestd/log.c | |
| parent | 6f6f70a51538783625c17cdcf21091d53fe45638 (diff) | |
Allow to choose the log level at runtime
Diffstat (limited to 'src/lisiblestd/log.c')
| -rw-r--r-- | src/lisiblestd/log.c | 45 |
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; +} |
