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 #ifndef _EYEDB_LOG_H
00026 #define _EYEDB_LOG_H
00027
00028 namespace eyedb {
00029
00035 #define IDB_LOG_MASK(X) ((unsigned long long)(1ULL << (X)))
00036
00037 #define IDB_LOG_LOCAL IDB_LOG_MASK(0)
00038 #define IDB_LOG_SERVER IDB_LOG_MASK(1)
00039
00040
00041 #define IDB_LOG_CONN IDB_LOG_MASK(2)
00042 #define IDB_LOG_TRANSACTION IDB_LOG_MASK(3)
00043 #define IDB_LOG_DATABASE IDB_LOG_MASK(4)
00044 #define IDB_LOG_ADMIN IDB_LOG_MASK(5)
00045 #define IDB_LOG_EXCEPTION IDB_LOG_MASK(40)
00046
00047
00048 #define IDB_LOG_OID_CREATE IDB_LOG_MASK(6)
00049 #define IDB_LOG_OID_READ IDB_LOG_MASK(7)
00050 #define IDB_LOG_OID_WRITE IDB_LOG_MASK(8)
00051 #define IDB_LOG_OID_DELETE IDB_LOG_MASK(9)
00052 #define IDB_LOG_OID_ALL (IDB_LOG_OID_CREATE | IDB_LOG_OID_READ | \
00053 IDB_LOG_OID_WRITE | IDB_LOG_OID_DELETE)
00054
00055 #define IDB_LOG_MMAP IDB_LOG_MASK(10)
00056 #define IDB_LOG_MMAP_DETAIL IDB_LOG_MASK(47)
00057 #define IDB_LOG_MTX IDB_LOG_MASK(41)
00058
00059
00060 #define IDB_LOG_IDX_CREATE IDB_LOG_MASK(11)
00061 #define IDB_LOG_IDX_REMOVE IDB_LOG_MASK(12)
00062 #define IDB_LOG_IDX_INSERT IDB_LOG_MASK(14)
00063 #define IDB_LOG_IDX_SUPPRESS IDB_LOG_MASK(15)
00064 #define IDB_LOG_IDX_SEARCH IDB_LOG_MASK(16)
00065 #define IDB_LOG_IDX_SEARCH_DETAIL IDB_LOG_MASK(13)
00066 #define IDB_LOG_IDX_ALL (IDB_LOG_IDX_CREATE | IDB_LOG_IDX_REMOVE | \
00067 IDB_LOG_IDX_INSERT | IDB_LOG_IDX_SEARCH_DETAIL | \
00068 IDB_LOG_IDX_SUPPRESS | IDB_LOG_IDX_SEARCH)
00069
00070
00071 #define IDB_LOG_OBJ_LOAD IDB_LOG_MASK(17)
00072 #define IDB_LOG_OBJ_CREATE IDB_LOG_MASK(18)
00073 #define IDB_LOG_OBJ_UPDATE IDB_LOG_MASK(19)
00074 #define IDB_LOG_OBJ_REMOVE IDB_LOG_MASK(20)
00075 #define IDB_LOG_OBJ_ALL (IDB_LOG_OBJ_LOAD | IDB_LOG_OBJ_CREATE | \
00076 IDB_LOG_OBJ_UPDATE | IDB_LOG_OBJ_REMOVE)
00077
00078 #define IDB_LOG_OBJ_GBX IDB_LOG_MASK(42)
00079 #define IDB_LOG_OBJ_INIT IDB_LOG_MASK(43)
00080 #define IDB_LOG_OBJ_GARBAGE IDB_LOG_MASK(44)
00081 #define IDB_LOG_OBJ_COPY IDB_LOG_MASK(45)
00082
00083 #define IDB_LOG_OBJ_ALLOC (IDB_LOG_OBJ_GBX | IDB_LOG_OBJ_INIT | \
00084 IDB_LOG_OBJ_GARBAGE | IDB_LOG_OBJ_COPY)
00085
00086 #define IDB_LOG_DEV IDB_LOG_MASK(46)
00087
00088
00089 #define IDB_LOG_EXECUTE IDB_LOG_MASK(21)
00090
00091
00092 #define IDB_LOG_DATA_READ IDB_LOG_MASK(22)
00093 #define IDB_LOG_DATA_CREATE IDB_LOG_MASK(23)
00094 #define IDB_LOG_DATA_WRITE IDB_LOG_MASK(24)
00095 #define IDB_LOG_DATA_DELETE IDB_LOG_MASK(25)
00096 #define IDB_LOG_DATA_ALL (IDB_LOG_DATA_CREATE | IDB_LOG_DATA_READ | \
00097 IDB_LOG_DATA_WRITE | IDB_LOG_DATA_DELETE)
00098
00099
00100 #define IDB_LOG_OQL_EXEC IDB_LOG_MASK(26)
00101 #define IDB_LOG_OQL_RESULT IDB_LOG_MASK(30)
00102
00103
00104 #define IDB_LOG_RELSHIP IDB_LOG_MASK(27)
00105 #define IDB_LOG_RELSHIP_DETAILS IDB_LOG_MASK(28)
00106
00107 #define IDB_LOG_SCHEMA_EVOLVE IDB_LOG_MASK(29)
00108
00109 #define IDB_LOG_USER_BOTTOM 50
00110 #define IDB_LOG_USER_MAX 12
00111
00112
00113 #define IDB_LOG_USER(X) \
00114 (((X) >= 0 && (X) < IDB_LOG_USER_MAX) ? \
00115 IDB_LOG_MASK((X+IDB_LOG_USER_BOTTOM)) : \
00116 (unsigned long long)(fprintf(stderr, "out of range user log #%d\n", (X)), 0))
00117
00118
00119 #define IDB_LOG_DEFAULT (IDB_LOG_LOCAL | IDB_LOG_SERVER | IDB_LOG_CONN | \
00120 IDB_LOG_TRANSACTION | IDB_LOG_DATABASE | \
00121 IDB_LOG_ADMIN | IDB_LOG_EXCEPTION | IDB_LOG_MTX)
00122
00123
00124 #define IDB_LOG_NOLOG IDB_LOG_MASK(63)
00125
00126 typedef unsigned long long LogMask;
00127
00128 #if defined(__cplusplus) && !defined(_eyedb_se_P_)
00129
00133 class Log {
00134
00135 public:
00141 static Status setLogMask(LogMask mask);
00142
00148 static Status setLogMask(const char *str);
00149
00154 static LogMask getLogMask();
00155
00162 static Status logMaskToString(LogMask mask, std::string &str);
00163
00170 static Status logStringToMask(const std::string &str, LogMask &mask);
00171
00176 static std::string getUsage();
00177
00182 static const char *getLog();
00183
00189 static void setLog(const char *log);
00190
00196 static void setLogTimer(Bool);
00197
00202 static Bool getLogTimer();
00203
00207 static void resetLogTimer();
00208
00213 static void setLogDate(Bool on);
00214
00219 static Bool getLogDate();
00220
00225 static void setLogPid(Bool on);
00226
00231 static Bool getLogPid();
00232
00237 static void setLogProgName(Bool on);
00238
00243 static Bool getLogProgName();
00244
00245
00246 static Status init(const char *progname, const char *logname);
00247 };
00248 #endif
00249
00250
00251 #define IDB_LOG(L, S) \
00252 do {if (((L) & eyedblib::log_mask) == (L)) {utlog_p(#L); utlog S;}} while(0)
00253
00254 #define IDB_LOG_D(L, S) \
00255 do {if ((((L)|IDB_LOG_DEV) & eyedblib::log_mask) == ((L)|IDB_LOG_DEV)) {utlog_p(#L); utlog S;}} while(0)
00256
00257 #define IDB_LOG_X(L, S) \
00258 do {if (((L) & eyedblib::log_mask) == (L)) utlog S;} while(0)
00259
00260 #define IDB_LOG_DX(L, S) \
00261 do {if ((((L)|IDB_LOG_DEV) & eyedblib::log_mask) == ((L)|IDB_LOG_DEV)) utlog S;} while(0)
00262
00263 #define IDB_LOG_F(S) \
00264 do { \
00265 FILE *logfd; \
00266 \
00267 utlog_p("FATAL_ERROR"); \
00268 utlog S;\
00269 \
00270 logfd = utlogFDSet(stderr); \
00271 utlog_p("FATAL_ERROR"); \
00272 utlog S; \
00273 (void)utlogFDSet(logfd);\
00274 } while (0)
00275
00276 #define IDB_LOG_FX(S) \
00277 do { \
00278 utlog_p("FATAL_ERROR"); \
00279 utlog S;\
00280 } while (0)
00281
00286 }
00287
00288 namespace eyedblib {
00289 extern LogMask log_mask;
00290 }
00291
00292 #endif