1 /*========================================================================== 2 epub2txt v2 3 log.c 4 Copyright (c)2000-2020 Kevin Boone, GPL v3.0 5 *==========================================================================*/ 6 7 #define _GNU_SOURCE 1 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include "log.h" 16 17 static int log_level = DEBUG; 18 19 /*========================================================================== 20 log_set_level 21 *==========================================================================*/ 22 void log_set_level (const int level) 23 { 24 log_level = level; 25 } 26 27 /*========================================================================== 28 log_vprintf 29 *==========================================================================*/ 30 void log_vprintf (const int level, const char *fmt, va_list ap) 31 { 32 if (level > log_level) return; 33 char *str = NULL; 34 vasprintf (&str, fmt, ap); 35 const char *levelstr = "ERROR"; 36 if (level == WARNING) 37 levelstr = "WARN"; 38 else if (level == INFO) 39 levelstr = "INFO"; 40 else if (level == DEBUG) 41 levelstr = "DEBUG"; 42 else if (level == TRACE) 43 levelstr = "TRACE"; 44 fprintf (stderr, APPNAME " %s %s\n", levelstr, str); 45 free (str); 46 } 47 48 49 /*========================================================================== 50 log_error 51 *==========================================================================*/ 52 void log_error (const char *fmt,...) 53 { 54 va_list ap; 55 va_start (ap, fmt); 56 log_vprintf (ERROR, fmt, ap); 57 va_end (ap); 58 } 59 60 61 /*========================================================================== 62 log_warning 63 *==========================================================================*/ 64 void log_warning (const char *fmt,...) 65 { 66 va_list ap; 67 va_start (ap, fmt); 68 log_vprintf (WARNING, fmt, ap); 69 va_end (ap); 70 } 71 72 73 /*========================================================================== 74 log_info 75 *==========================================================================*/ 76 void log_info (const char *fmt,...) 77 { 78 va_list ap; 79 va_start (ap, fmt); 80 log_vprintf (INFO, fmt, ap); 81 va_end (ap); 82 } 83 84 85 /*========================================================================== 86 log_debug 87 *==========================================================================*/ 88 void log_debug (const char *fmt,...) 89 { 90 va_list ap; 91 va_start (ap, fmt); 92 log_vprintf (DEBUG, fmt, ap); 93 va_end (ap); 94 } 95 96 97 /*========================================================================== 98 log_trace 99 *==========================================================================*/ 100 void log_trace (const char *fmt,...) 101 { 102 va_list ap; 103 va_start (ap, fmt); 104 log_vprintf (TRACE, fmt, ap); 105 va_end (ap); 106 } 107 108 109