Raw File
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 <syslog.h>
9 #include <stdio.h>
10 #include <stdbool.h>
11 #include <unistd.h>
12 #include <stdlib.h>
13 #include <string.h>
14 #include <stdarg.h>
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
110
Generated by GNU Enscript 1.6.6, and GophHub 1.3.