00001
00002 #ifndef COBARO_LOG0_LOG_H
00003 #define COBARO_LOG0_LOG_H
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include <inttypes.h>
00014 #include <stdarg.h>
00015 #include <stdbool.h>
00016 #include <stdio.h>
00017 #include <stdint.h>
00018 #include <stdlib.h>
00019 #include <string.h>
00020 #include <time.h>
00021
00050
00052 enum cobaro_log_types {
00053 COBARO_STRING = 1,
00054 COBARO_INTEGER = 2,
00055 COBARO_REAL = 3,
00056 COBARO_IPV4 = 4
00057 };
00058
00059
00061 enum cobaro_log_levels {
00062 COBARO_LOG_EMERG = 0,
00063 COBARO_LOG_ALERT,
00064 COBARO_LOG_CRIT,
00065 COBARO_LOG_ERR,
00066 COBARO_LOG_WARNING,
00067 COBARO_LOG_NOTICE,
00068 COBARO_LOG_INFO,
00069 COBARO_LOG_DEBUG,
00070 COBARO_LOG_LEVELS_COUNT
00071 };
00072
00073
00075 #define COBARO_LOG_PARAM_MAX (8) // Search log.c for PARAM_MAX_FIX if changed
00076
00077
00082 struct cobaro_log {
00083
00087 uint32_t id;
00088
00090 uint32_t code;
00091
00093 struct cobaro_log *next;
00094
00096 uint8_t level;
00097
00098
00099
00101 char pad[44];
00102
00104 struct {
00107 uint8_t type;
00108
00109
00110
00112 union {
00114 char s[48];
00115
00117 int64_t i;
00118
00120 double f;
00121
00123 uint32_t ipv4;
00124 } v;
00125 } p[COBARO_LOG_PARAM_MAX];
00126
00127 };
00128
00129
00130
00131
00132
00133
00135 typedef struct cobaro_log *cobaro_log_t;
00136
00138 typedef struct cobaro_loghandle *cobaro_loghandle_t;
00139
00140
00141
00143 char *cobaro_log_version(void);
00144
00156 cobaro_loghandle_t cobaro_log_init(char **messages);
00157
00169 void cobaro_log_messages_set(cobaro_loghandle_t lh, char **messages);
00170
00175 void cobaro_log_fini(cobaro_loghandle_t lh);
00176
00192 cobaro_log_t cobaro_log_claim(cobaro_loghandle_t lh);
00193
00207 void cobaro_log_set_string(cobaro_log_t log, int argnum, const char *source);
00208
00219 void cobaro_log_set_integer(cobaro_log_t log, int argnum, int64_t source);
00220
00231 void cobaro_log_set_double(cobaro_log_t log, int argnum, double source);
00232
00243 void cobaro_log_set_ipv4(cobaro_log_t log, int argnum, uint32_t source);
00244
00252 void cobaro_log_publish(cobaro_loghandle_t lh, cobaro_log_t log);
00253
00262 cobaro_log_t cobaro_log_next(cobaro_loghandle_t lh);
00263
00271 void cobaro_log_return(cobaro_loghandle_t lh, cobaro_log_t log);
00272
00287 bool cobaro_log(cobaro_loghandle_t lh, cobaro_log_t log);
00288
00303 void cobaro_log_to_syslog(cobaro_loghandle_t lh, cobaro_log_t log);
00304
00334 int cobaro_log_to_file(cobaro_loghandle_t lh, cobaro_log_t log, FILE *f);
00335
00360 int cobaro_log_to_string(cobaro_loghandle_t lh, cobaro_log_t log,
00361 char *buffer, size_t buflen);
00362
00374 bool cobaro_log_loglevel_set(cobaro_loghandle_t lh, int level);
00375
00386 bool cobaro_log_file_set(cobaro_loghandle_t lh, FILE *f);
00387
00398 bool cobaro_log_syslog_set(cobaro_loghandle_t lh);
00399
00400
00401
00402 #endif