00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __EXP_LOGGER_H__
00019 #define __EXP_LOGGER_H__
00020
00021 #ifdef __cplusplus
00022 extern "C"
00023 {
00024 #endif
00025
00026 #include <liblogger/liblogger_levels.h>
00027 #include <liblogger/liblogger_config.h>
00028
00029
00030 #define LIBLOGGER_MAJOR_VERSION 0
00031
00032 #define LIBLOGGER_MINOR_VERSION 1
00033
00034
00035
00036 #ifndef LOG_LEVEL
00037 #define LOG_LEVEL LOG_LEVEL_TRACE
00038 #endif
00039
00040
00041 #ifndef LOG_MODULE_NAME
00042 #define LOG_MODULE_NAME ""
00043 #endif
00044
00045
00046
00047
00048 typedef enum LogDest
00049 {
00050
00051 LogToFile,
00052
00053 LogToConsole,
00054
00055
00056 LogToSocket
00057 }LogDest;
00058
00059
00060
00061
00062 #undef VARIADIC_MACROS
00063
00064 #if !defined(DISABLE_VARIADIC_CHECK) && (defined(__GNUC__) || (_MSC_VER >= 1400))
00065
00066
00067
00068 #define VARIADIC_MACROS
00069 #endif
00070
00071
00072 #ifdef ASSUME_VARIADIC_SUPPORT
00073 #define VARIADIC_MACROS
00074 #endif
00075
00076
00077 #ifdef DISABLE_ALL_LOGS
00078 #ifdef __GNUC__
00079
00080 #warning Logger disabled.
00081 #endif // __GNUC__
00082
00083 #define LogTrace
00084 #define LogDebug
00085 #define LogInfo
00086 #define LogWarn
00087 #define LogError
00088 #define LogFatal
00089 #define LogFuncEntry()
00090 #define LogFuncExit()
00091 #define InitLogger
00092 #define DeInitLogger()
00093 #else
00094
00095
00096 #if defined(WIN32) || defined(_WIN32)
00097 #define __func__ __FUNCTION__
00098 #endif
00099
00100
00101
00102 #ifdef VARIADIC_MACROS
00103 int LogStub_vm(LogLevel logLevel,
00104 const char* moduleName,const char* file,
00105 const char* funcName, const int lineNum,
00106 const char* fmt,...);
00107 #endif
00108
00109
00110
00111
00112
00113
00114 int InitLogger(LogDest ldest,void* loggerInitParams);
00115
00116
00117 void DeInitLogger();
00118
00119
00120
00121 #if LOG_LEVEL<= LOG_LEVEL_TRACE
00122 #ifdef VARIADIC_MACROS
00123 #if defined(DISABLE_FILENAMES)
00124
00125 #define LogTrace(fmt, ...) LogStub_vm(Trace,LOG_MODULE_NAME,"",__func__, __LINE__ , fmt , ## __VA_ARGS__)
00126 #else
00127 #define LogTrace(fmt, ...) LogStub_vm(Trace,LOG_MODULE_NAME,__FILE__,__func__, __LINE__ , fmt , ## __VA_ARGS__)
00128 #endif // DISABLE_FILENAMES
00129 #else
00130
00131 int LogTrace(const char *fmt, ...);
00132 #endif // VARIADIC_MACROS
00133 #else
00134
00135 #define LogTrace
00136 #endif
00137
00138
00139 #if LOG_LEVEL<= LOG_LEVEL_DEBUG
00140 #ifdef VARIADIC_MACROS
00141 #if defined(DISABLE_FILENAMES)
00142
00143 #define LogDebug(fmt, ...) LogStub_vm(Debug,LOG_MODULE_NAME,"",__func__, __LINE__ , fmt , ## __VA_ARGS__)
00144 #else
00145 #define LogDebug(fmt, ...) LogStub_vm(Debug,LOG_MODULE_NAME,__FILE__,__func__, __LINE__ , fmt , ## __VA_ARGS__)
00146 #endif // DISABLE_FILENAMES
00147 #else
00148
00149 int LogDebug(const char *fmt, ...);
00150 #endif // VARIADIC_MACROS
00151 #else
00152
00153 #define LogDebug
00154 #endif
00155
00156
00157 #if LOG_LEVEL<= LOG_LEVEL_INFO
00158 #ifdef VARIADIC_MACROS
00159 #if defined(DISABLE_FILENAMES)
00160
00161 #define LogInfo(fmt, ...) LogStub_vm(Info,LOG_MODULE_NAME,"",__func__, __LINE__ , fmt , ## __VA_ARGS__)
00162 #else
00163 #define LogInfo(fmt, ...) LogStub_vm(Info,LOG_MODULE_NAME,__FILE__,__func__, __LINE__ , fmt , ## __VA_ARGS__)
00164 #endif // DISABLE_FILENAMES
00165 #else
00166
00167 int LogInfo(const char *fmt, ...);
00168 #endif // VARIADIC_MACROS
00169 #else
00170
00171 #define LogInfo
00172 #endif
00173
00174
00175 #if LOG_LEVEL<= LOG_LEVEL_WARN
00176 #ifdef VARIADIC_MACROS
00177 #if defined(DISABLE_FILENAMES)
00178
00179 #define LogWarn(fmt, ...) LogStub_vm(Warn,LOG_MODULE_NAME,"",__func__, __LINE__ , fmt , ## __VA_ARGS__)
00180 #else
00181 #define LogWarn(fmt, ...) LogStub_vm(Warn,LOG_MODULE_NAME,__FILE__,__func__, __LINE__ , fmt , ## __VA_ARGS__)
00182 #endif // DISABLE_FILENAMES
00183 #else
00184
00185 int LogWarn(const char *fmt, ...);
00186 #endif // VARIADIC_MACROS
00187 #else
00188
00189 #define LogWarn
00190 #endif
00191
00192
00193 #if LOG_LEVEL<= LOG_LEVEL_ERROR
00194 #ifdef VARIADIC_MACROS
00195 #if defined(DISABLE_FILENAMES)
00196
00197 #define LogError(fmt, ...) LogStub_vm(Error,LOG_MODULE_NAME,"",__func__, __LINE__ , fmt , ## __VA_ARGS__)
00198 #else
00199 #define LogError(fmt, ...) LogStub_vm(Error,LOG_MODULE_NAME,__FILE__,__func__, __LINE__ , fmt , ## __VA_ARGS__)
00200 #endif // DISABLE_FILENAMES
00201 #else
00202
00203 int LogError(const char *fmt, ...);
00204 #endif // VARIADIC_MACROS
00205 #else
00206
00207 #define LogError
00208 #endif
00209
00210
00211 #if LOG_LEVEL<= LOG_LEVEL_FATAL
00212 #ifdef VARIADIC_MACROS
00213 #if defined(DISABLE_FILENAMES)
00214
00215 #define LogFatal(fmt, ...) LogStub_vm(Fatal,LOG_MODULE_NAME,"",__func__, __LINE__ , fmt , ## __VA_ARGS__)
00216 #else
00217 #define LogFatal(fmt, ...) LogStub_vm(Fatal,LOG_MODULE_NAME,__FILE__,__func__, __LINE__ , fmt , ## __VA_ARGS__)
00218 #endif // DISABLE_FILENAMES
00219 #else
00220
00221 int LogFatal(const char *fmt, ...);
00222 #endif // VARIADIC_MACROS
00223 #else
00224
00225 #define LogFatal
00226 #endif
00227
00228 #if LOG_LEVEL<= LOG_LEVEL_TRACE
00229
00230 int FuncLogEntry(const char* funcName);
00231
00232 int FuncLogExit(const char* funcName,const int lineNumber);
00233
00234 #define LogFuncEntry() FuncLogEntry(__func__)
00235 #define LogFuncExit() FuncLogExit(__func__,__LINE__)
00236
00237 #else
00238
00239 #define LogFuncEntry()
00240 #define LogFuncExit()
00241 #endif
00242
00243 #endif // DISABLE_ALL_LOGS
00244
00245
00246 #ifdef __cplusplus
00247 }
00248 #endif
00249
00250 #endif
00251