diff options
Diffstat (limited to 'src/rodeo_log.c')
| -rw-r--r-- | src/rodeo_log.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/rodeo_log.c b/src/rodeo_log.c new file mode 100644 index 0000000..0bce445 --- /dev/null +++ b/src/rodeo_log.c @@ -0,0 +1,62 @@ + +// public external +#include "rodeo_types.h" +#include "rodeo.h" + +static rodeo_log_function logging_function = NULL; + +void +rodeo_log( + rodeo_loglevel_t loglevel, + const char *format, + ... +) +{ + rodeo_string_t formatted; + mrodeo_vargs_do(format) + { + formatted = rodeo_string_format(format, vargs); + } + + switch(loglevel) + { + case rodeo_loglevel_info: + rodeo_string_prepend( + &formatted, + rodeo_string_create("[INFO]: ") + ); + break; + case rodeo_loglevel_warning: + rodeo_string_prepend( + &formatted, + rodeo_string_create("\033[33m[WARN]:\033[0m ") + ); + break; + case rodeo_loglevel_error: + rodeo_string_prepend( + &formatted, + rodeo_string_create("\033[31;1m[ERROR]:\033[0m ") + ); + break; + } + rodeo_string_append( + &formatted, + rodeo_string_create("\n") + ); + + if(logging_function == NULL) + { + printf("%s", rodeo_string_to_constcstr(&formatted)); + } + else + { + logging_function(formatted); + } +} + +void +rodeo_log_function_set(rodeo_log_function rodeo_log_func) +{ + logging_function = rodeo_log_func; +} + |
