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
00034 #ifndef _QOF_LOG_H
00035 #define _QOF_LOG_H
00036
00037 #include <stdarg.h>
00038 #include <stdio.h>
00039 #include "qofutil.h"
00040
00041 #define QOF_MOD_ENGINE "qof-engine"
00042
00043 #define LOG_LEVEL_LIST(_) \
00044 _(QOF_LOG_FATAL, = 0) \
00045 _(QOF_LOG_ERROR, = 1) \
00046 _(QOF_LOG_WARNING, = 2) \
00047 _(QOF_LOG_INFO, = 3) \
00048 _(QOF_LOG_DEBUG, = 4) \
00049 _(QOF_LOG_DETAIL, = 5) \
00050 _(QOF_LOG_TRACE, = 6)
00051
00052 DEFINE_ENUM (QofLogLevel, LOG_LEVEL_LIST)
00053
00054 AS_STRING_DEC(QofLogLevel, LOG_LEVEL_LIST)
00061 FROM_STRING_DEC(QofLogLevel, LOG_LEVEL_LIST)
00068 void qof_log_add_indent(void);
00069
00071 gint qof_log_get_indent(void);
00072
00077 void qof_log_drop_indent(void);
00078
00089 void qof_log_init (void);
00090
00096 void qof_log_set_level(QofLogModule module, QofLogLevel level);
00097
00118 void qof_log_set_level_registered(QofLogLevel level);
00119
00126 void qof_log_set_file (FILE *outfile);
00127
00132 void qof_log_init_filename (const gchar* logfilename);
00133
00135 void qof_log_shutdown (void);
00136
00140 const gchar * qof_log_prettify (const gchar *name);
00141
00143 gboolean qof_log_check(QofLogModule log_module, QofLogLevel log_level);
00144
00146 void qof_log_set_default(QofLogLevel log_level);
00147
00148 typedef void (*QofLogCB) (QofLogModule log_module, QofLogLevel* log_level,
00149 gpointer user_data);
00150
00156 void qof_log_module_foreach(QofLogCB cb, gpointer data);
00157
00159 gint qof_log_module_count(void);
00160
00161 #define FUNK qof_log_prettify(__FUNCTION__)
00162
00174 #define FATAL(format, args...) do { \
00175 g_log (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, \
00176 "Fatal Error: %s(): " format, FUNK , ## args); \
00177 } while (0)
00178
00180 #define PERR(format, args...) do { \
00181 if (qof_log_check (log_module, QOF_LOG_ERROR)) { \
00182 g_log (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, \
00183 "Error: %s(): " format, FUNK , ## args); \
00184 } \
00185 } while (0)
00186
00188 #define PWARN(format, args...) do { \
00189 if (qof_log_check (log_module, QOF_LOG_WARNING)) { \
00190 g_log (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, \
00191 "Warning: %s(): " format, FUNK , ## args); \
00192 } \
00193 } while (0)
00194
00196 #define PINFO(format, args...) do { \
00197 if (qof_log_check (log_module, QOF_LOG_INFO)) { \
00198 g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, \
00199 "Info: %s(): " format, \
00200 FUNK , ## args); \
00201 } \
00202 } while (0)
00203
00205 #define DEBUG(format, args...) do { \
00206 if (qof_log_check (log_module, QOF_LOG_DEBUG)) { \
00207 g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
00208 "Debug: %s(): " format, \
00209 FUNK , ## args); \
00210 } \
00211 } while (0)
00212
00214 #define ENTER(format, args...) do { \
00215 if (qof_log_check (log_module, QOF_LOG_DEBUG)) { \
00216 g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
00217 "Enter in %s: %s()" format, __FILE__, \
00218 FUNK , ## args); \
00219 qof_log_add_indent(); \
00220 } \
00221 } while (0)
00222
00224 #define LEAVE(format, args...) do { \
00225 if (qof_log_check (log_module, QOF_LOG_DEBUG)) { \
00226 qof_log_drop_indent(); \
00227 g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
00228 "Leave: %s()" format, \
00229 FUNK , ## args); \
00230 } \
00231 } while (0)
00232
00234 #define TRACE(format, args...) do { \
00235 if (qof_log_check (log_module, QOF_LOG_TRACE)) { \
00236 g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
00237 "Trace: %s(): " format, FUNK , ## args); \
00238 } \
00239 } while (0)
00240
00241 #define DEBUGCMD(x) do { \
00242 if (qof_log_check (log_module, QOF_LOG_DEBUG)) { \
00243 (x); \
00244 } \
00245 } while (0)
00246
00247
00252 void qof_start_clock (gint clockno, QofLogModule log_module, QofLogLevel log_level,
00253 const gchar *function_name, const gchar *format, ...);
00254
00255 void qof_report_clock (gint clockno,
00256 QofLogModule log_module,
00257 QofLogLevel log_level,
00258 const gchar *function_name,
00259 const gchar *format, ...);
00260
00261 void qof_report_clock_total (gint clockno,
00262 QofLogModule log_module,
00263 QofLogLevel log_level,
00264 const gchar *function_name,
00265 const gchar *format, ...);
00266
00268 #define START_CLOCK(clockno,format, args...) do { \
00269 if (qof_log_check (log_module, QOF_LOG_INFO)) \
00270 qof_start_clock (clockno, log_module, QOF_LOG_INFO, \
00271 __FUNCTION__, format , ## args); \
00272 } while (0)
00273
00275 #define REPORT_CLOCK(clockno,format, args...) do { \
00276 if (qof_log_check (log_module, QOF_LOG_INFO)) \
00277 qof_report_clock (clockno, log_module, QOF_LOG_INFO, \
00278 __FUNCTION__, format , ## args); \
00279 } while (0)
00280
00282 #define REPORT_CLOCK_TOTAL(clockno,format, args...) do { \
00283 if (qof_log_check (log_module, QOF_LOG_INFO)) \
00284 qof_report_clock_total (clockno, log_module, QOF_LOG_INFO, \
00285 __FUNCTION__, format , ## args); \
00286 } while (0)
00287
00288
00289 #endif
00290