C: Add report
This commit is contained in:
commit
4647847eb3
6
README.MD
Normal file
6
README.MD
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Code Snippets
|
||||||
|
Small code snippets that might prove useful again in the future.
|
||||||
|
|
||||||
|
## C
|
||||||
|
* report: Easy to use report statement with log levels
|
||||||
|
|
60
c/report/report.c
Normal file
60
c/report/report.c
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* C-Report
|
||||||
|
* ----------------------------------------------------------------------------
|
||||||
|
* Author : Markus Koch <markus@notsyncing.net>
|
||||||
|
* Contributors : None
|
||||||
|
* License : Mozilla Public License (MPL) Version 2
|
||||||
|
* ----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "logging.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
static enum log_level current_log_level = LL_INFO;
|
||||||
|
|
||||||
|
static const char *ll_string[] = {
|
||||||
|
"\x1B[31m\x1B[1m[X] ",
|
||||||
|
"\x1B[31m[E] ",
|
||||||
|
"\x1B[33m[W] ",
|
||||||
|
"\x1B[32m[I] ",
|
||||||
|
"\x1B[34m[D] ",
|
||||||
|
"\x1B[34m[d] ",
|
||||||
|
"[?] "
|
||||||
|
};
|
||||||
|
|
||||||
|
int should_report(enum log_level log_level)
|
||||||
|
{
|
||||||
|
return (log_level <= current_log_level);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum log_level report(enum log_level log_level, const char *format, ...)
|
||||||
|
{
|
||||||
|
va_list vargs;
|
||||||
|
|
||||||
|
if (log_level > LL_COUNT)
|
||||||
|
log_level = LL_COUNT;
|
||||||
|
|
||||||
|
if (should_report(log_level)) {
|
||||||
|
va_start(vargs, format);
|
||||||
|
fprintf(stderr, "%s", ll_string[log_level]);
|
||||||
|
vfprintf(stderr, format, vargs);
|
||||||
|
fprintf(stderr, "\x1B[0m\n");
|
||||||
|
va_end(vargs);
|
||||||
|
}
|
||||||
|
|
||||||
|
return log_level;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_log_level(enum log_level log_level)
|
||||||
|
{
|
||||||
|
if (log_level >= LL_COUNT)
|
||||||
|
log_level = LL_COUNT - 1;
|
||||||
|
current_log_level = log_level;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum log_level get_log_level()
|
||||||
|
{
|
||||||
|
return current_log_level;
|
||||||
|
}
|
28
c/report/report.h
Normal file
28
c/report/report.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* C-Report
|
||||||
|
* ----------------------------------------------------------------------------
|
||||||
|
* Author : Markus Koch <markus@notsyncing.net>
|
||||||
|
* Contributors : None
|
||||||
|
* License : Mozilla Public License (MPL) Version 2
|
||||||
|
* ----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef REPORT_H
|
||||||
|
#define REPORT_H
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
enum log_level {LL_CRITICAL = 0,
|
||||||
|
LL_ERROR,
|
||||||
|
LL_WARNING,
|
||||||
|
LL_INFO,
|
||||||
|
LL_DEBUG,
|
||||||
|
LL_NOISY,
|
||||||
|
LL_COUNT};
|
||||||
|
int should_report(enum log_level log_level);
|
||||||
|
enum log_level report(enum log_level log_level, const char *format, ...);
|
||||||
|
void set_log_level(enum log_level log_level);
|
||||||
|
enum log_level get_log_level();
|
||||||
|
|
||||||
|
#endif // REPORT_H
|
Loading…
Reference in New Issue
Block a user