AmendHub

Download:

ftech

/

Logger

/

amendments

/

2

Added Info log level


Francois Techene made amendment 2 10 days ago
--- logger-test.c Mon Apr 7 11:26:12 2025 +++ logger-test.c Tue Apr 8 09:47:06 2025 @@ -29,7 +29,7 @@ main(void) printf("+-----------------------------------+\n"); printf("| Logger Test |\n"); - printf("+-----------------------------------+\n\n"); + printf("+-----------------------------------+\n"); // You can use a file in a shared folder on the network // and use "tail -f" on the remote machine the see the logs @@ -43,53 +43,68 @@ main(void) init_logger(DEBUG_LEVEL, FILE_OUT, "test.log"); - printf("\n-- Logging to file: %s\n", logger.file_path); + printf("-- Logging to file: %s\n", logger.file_path); logger.debug("This is a debug message to %s", logger.file_path); + logger.info("This is an info message to %s ", logger.file_path); logger.warn("This is a warning to %s", logger.file_path); logger.error("This is an error to %s", logger.file_path); init_logger(DEBUG_LEVEL, CONSOLE_OUT, NULL); - printf("\n-- Logging to the console:\n\n"); + printf("-- Logging to the console:\n"); logger.debug("This is a debug message with number %d ", 1); - logger.warn("This is a warning with number %d ", 2); - logger.error("This is an error with number %d ", 3); + logger.info("This is an info message with number %d ", 2); + logger.warn("This is a warning with number %d ", 3); + logger.error("This is an error with number %d ", 4); init_logger(NONE_LEVEL, CONSOLE_OUT, NULL); - printf("\n-- NONE_LEVEL: Must not show any log: \n\n"); + printf("\n-- NONE_LEVEL: Must not show any log: \n"); logger.debug("This debug log should not be visible"); + logger.info("This info log should not be visible"); logger.warn("This warning log should not be visible"); logger.error("This error log should not be visible"); init_logger(ERROR_LEVEL, CONSOLE_OUT, NULL); - printf("\n-- ERROR_LEVEL: Must show only errors: \n\n"); - logger.debug("This debug log should not be visible"); - logger.warn("This warning log should not be visible"); + printf("-- ERROR_LEVEL: Must show only errors: \n"); + logger.debug("This debug log should not be visible !!!"); + logger.info("This info log should not be visible !!!"); + logger.warn("This warning log should not be visible !!!"); logger.error("This error log should be visible"); init_logger(WARNING_LEVEL, CONSOLE_OUT, NULL); - printf("\n-- WARNING_LEVEL: Must show errors and warnings: \n\n"); - logger.debug("This debug log should not be visible"); + printf("\n-- WARNING_LEVEL: Must show warnings and errors: \n"); + logger.debug("This debug log should not be visible !!!"); + logger.info("This info log should not be visible !!!"); logger.warn("This warning log should be visible"); logger.error("This error log should be visible"); + init_logger(INFO_LEVEL, CONSOLE_OUT, NULL); + + printf("\n-- INFO_LEVEL: Must show info, warnings and errors: \n"); + logger.debug("This debug log should not be visible !!!"); + logger.info("This info log should be visible"); + logger.warn("This warning log should be visible"); + logger.error("This error log should be visible"); + + init_logger(DEBUG_LEVEL, NONE_OUT, NULL); - printf("\n-- Logging to none output: \n\n"); - logger.debug("This debug log should not be visible"); - logger.warn("This warning log should not be visible"); - logger.error("This error log should not be visible"); + printf("\n-- Logging to none output: \n"); + logger.debug("This debug log should not be visible !!!"); + logger.info("This info log should not be visible !!!"); + logger.warn("This warning log should not be visible !!!"); + logger.error("This error log should not be visible !!!"); - printf("\nDone!\n"); + printf("Done!"); return 1; --- logger.c Mon Apr 7 11:24:55 2025 +++ logger.c Tue Apr 8 09:29:25 2025 @@ -32,6 +32,7 @@ init_logger(LogLevel level, char* file_path) { logger.debug = log_debug; + logger.info = log_info; logger.warn = log_warn; logger.error = log_error; @@ -119,6 +120,23 @@ log_debug(char* format, ...) va_end(ap); logger.log("DEBUG: %s", log); +} + +void +log_info(char* format, ...) +{ + va_list ap; + char log[256] = ""; + + if (logger.log_level < INFO_LEVEL) { + return; + } + + va_start(ap, format); + vsprintf(log, format, ap); + va_end(ap); + + logger.log("INFO: %s", log); } void --- logger.h Mon Apr 7 11:25:44 2025 +++ logger.h Tue Apr 8 09:30:11 2025 @@ -25,6 +25,7 @@ typedef enum { NONE_LEVEL = 0, ERROR_LEVEL, WARNING_LEVEL, + INFO_LEVEL, DEBUG_LEVEL } LogLevel; @@ -41,6 +42,7 @@ typedef struct _Logger { void (*log) (char* format, ...); void (*debug) (char* format, ...); + void (*info) (char* format, ...); void (*warn) (char* format, ...); void (*error) (char* format, ...); @@ -58,6 +60,7 @@ void init_logger(LogLevel level, char* file_path); void log_debug(char* format, ...); +void log_info(char* format, ...); void log_warn(char* format, ...); void log_error(char* format, ...); --- README Mon Apr 7 12:03:00 2025 +++ README Tue Apr 8 09:49:59 2025 @@ -39,14 +39,15 @@ Note that the log file is not created. It needs to exi Log output methods are as follow: NONE_OUT = 0, - CONSOLE_OUT = 1, + CONSOLE_OUT = 1, FILE_OUT = 2, Log levels are as follow: - NONE_LEVEL = 0, + NONE_LEVEL = 0, ERROR_LEVEL = 1, WARNING_LEVEL = 2, - DEBUG_LEVEL = 3, + INFO_LEVEL = 3, + DEBUG_LEVEL = 4, init_logger() initializes the global variable `logger`. @@ -64,11 +65,12 @@ You can format your log message with variables: char* what = "students"; logger.log("There are %d %s", count, what); -Will output: "There are 10 students". +--> Will output: "There are 10 students". You can also use the following methods to differentiate debug, warning and error messages from your log output. - + logger.debug(char* format, ...); + logger.info(char* format, ...); logger.warn(char* format, ...); logger.error(char* format, ...); --- test.log Mon Apr 7 11:26:35 2025 +++ test.log Tue Apr 8 09:47:18 2025 @@ -1,3 +1,4 @@ DEBUG: This is a debug message to test.log +INFO: This is an info message to test.log WARNING: This is a warning to test.log ERROR: This is an error to test.log