csync_log.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _CSYNC_LOG_H
00033 #define _CSYNC_LOG_H
00034
00035 #include "config.h"
00036
00037 #ifdef CSYNC_TEST
00038 #undef WITH_LOG4C
00039 #endif
00040
00041 #ifdef WITH_LOG4C
00042 #include "log4c.h"
00043 #else
00044 #include <stdarg.h>
00045 #include <stdio.h>
00046 #endif
00047
00048 #ifndef CSYNC_LOG_CATEGORY_NAME
00049 #define CSYNC_LOG_CATEGORY_NAME "root"
00050 #endif
00051
00052
00053 #ifdef __GNUC__
00054 #define PRINTF_ATTRIBUTE(a,b) __attribute__ ((__format__ (__printf__, a, b)))
00055 #else
00056 #define PRINTF_ATTRIBUTE(a,b)
00057 #endif
00058
00059 #define CSYNC_LOG(priority, fmt, ...) \
00060 csync_log((char *) CSYNC_LOG_CATEGORY_NAME, priority, fmt, ## __VA_ARGS__)
00061
00062 #ifdef WITH_LOG4C
00063 #define CSYNC_LOG_PRIORITY_FATAL LOG4C_PRIORITY_FATAL
00064 #define CSYNC_LOG_PRIORITY_ALERT LOG4C_PRIORITY_ALERT
00065 #define CSYNC_LOG_PRIORITY_CRIT LOG4C_PRIORITY_CRIT
00066 #define CSYNC_LOG_PRIORITY_ERROR LOG4C_PRIORITY_ERROR
00067 #define CSYNC_LOG_PRIORITY_WARN LOG4C_PRIORITY_WARN
00068 #define CSYNC_LOG_PRIORITY_NOTICE LOG4C_PRIORITY_NOTICE
00069 #define CSYNC_LOG_PRIORITY_INFO LOG4C_PRIORITY_INFO
00070 #define CSYNC_LOG_PRIORITY_DEBUG LOG4C_PRIORITY_DEBUG
00071 #define CSYNC_LOG_PRIORITY_TRACE LOG4C_PRIORITY_TRACE
00072 #define CSYNC_LOG_PRIORITY_NOTSET LOG4C_PRIORITY_NOTSET
00073 #define CSYNC_LOG_PRIORITY_UNKNOWN LOG4C_PRIORITY_UNKNOWN
00074 #else
00075 #define LOG4C_INLINE inline
00076 #define CSYNC_LOG_PRIORITY_FATAL 000
00077 #define CSYNC_LOG_PRIORITY_ALERT 100
00078 #define CSYNC_LOG_PRIORITY_CRIT 200
00079 #define CSYNC_LOG_PRIORITY_ERROR 300
00080 #define CSYNC_LOG_PRIORITY_WARN 500
00081 #define CSYNC_LOG_PRIORITY_NOTICE 500
00082 #define CSYNC_LOG_PRIORITY_INFO 600
00083 #define CSYNC_LOG_PRIORITY_DEBUG 700
00084 #define CSYNC_LOG_PRIORITY_TRACE 800
00085 #define CSYNC_LOG_PRIORITY_NOTSET 900
00086 #define CSYNC_LOG_PRIORITY_UNKNOWN 1000
00087 #endif
00088
00089 static LOG4C_INLINE void csync_log(char *catName, int a_priority,
00090 const char* a_format,...) PRINTF_ATTRIBUTE(3, 4);
00091
00092
00093
00094
00095
00096 static LOG4C_INLINE int csync_log_init() {
00097 #ifdef WITH_LOG4C
00098 return log4c_init();
00099 #else
00100 return 0;
00101 #endif
00102 }
00103
00104
00105
00106
00107
00108
00109
00110
00111 static LOG4C_INLINE int csync_log_load(const char *path){
00112 #ifdef WITH_LOG4C
00113 return log4c_load(path);
00114 #else
00115 if (path == NULL) {
00116 return 0;
00117 }
00118 return 0;
00119 #endif
00120 }
00121
00122
00123
00124
00125
00126
00127 static LOG4C_INLINE int csync_log_fini(){
00128 #ifdef WITH_LOG4C
00129 return log4c_fini();
00130 #else
00131 return 0;
00132 #endif
00133 }
00134
00135 static LOG4C_INLINE int csync_log_setappender(char *catName, char *appName) {
00136 #ifdef WITH_LOG4C
00137 log4c_category_set_appender(log4c_category_get(catName),
00138 log4c_appender_get(appName));
00139 return 0;
00140 #else
00141 if (catName == NULL || appName == NULL) {
00142 return 0;
00143 }
00144 return 0;
00145 #endif
00146 }
00147
00148 static LOG4C_INLINE void csync_log(char *catName, int a_priority,
00149 const char* a_format,...) {
00150 #ifdef WITH_LOG4C
00151 const log4c_category_t* a_category = log4c_category_get(catName);
00152 if (log4c_category_is_priority_enabled(a_category, a_priority)) {
00153 va_list va;
00154 va_start(va, a_format);
00155 log4c_category_vlog(a_category, a_priority, a_format, va);
00156 va_end(va);
00157 }
00158 #else
00159 va_list va;
00160 va_start(va, a_format);
00161 if (a_priority > 0) {
00162 printf("%s - ", catName);
00163 }
00164 vprintf(a_format, va);
00165 va_end(va);
00166 printf("\n");
00167 #endif
00168 }
00169
00170
00171
00172
00173 #endif
00174
00175