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 _EYEDBLIB_LOG_H
00026 #define _EYEDBLIB_LOG_H
00027
00028 #include <stdio.h>
00029
00030 #define IDB_LOG_MASK(X) ((unsigned long long)(1ULL << (X)))
00031
00032 #define IDB_LOG_LOCAL IDB_LOG_MASK(0)
00033 #define IDB_LOG_SERVER IDB_LOG_MASK(1)
00034
00035
00036 #define IDB_LOG_CONN IDB_LOG_MASK(2)
00037 #define IDB_LOG_TRANSACTION IDB_LOG_MASK(3)
00038 #define IDB_LOG_DATABASE IDB_LOG_MASK(4)
00039 #define IDB_LOG_ADMIN IDB_LOG_MASK(5)
00040 #define IDB_LOG_EXCEPTION IDB_LOG_MASK(40)
00041
00042
00043 #define IDB_LOG_OID_CREATE IDB_LOG_MASK(6)
00044 #define IDB_LOG_OID_READ IDB_LOG_MASK(7)
00045 #define IDB_LOG_OID_WRITE IDB_LOG_MASK(8)
00046 #define IDB_LOG_OID_DELETE IDB_LOG_MASK(9)
00047 #define IDB_LOG_OID_ALL (IDB_LOG_OID_CREATE | IDB_LOG_OID_READ | \
00048 IDB_LOG_OID_WRITE | IDB_LOG_OID_DELETE)
00049
00050 #define IDB_LOG_MMAP IDB_LOG_MASK(10)
00051 #define IDB_LOG_MMAP_DETAIL IDB_LOG_MASK(47)
00052 #define IDB_LOG_MTX IDB_LOG_MASK(41)
00053
00054
00055 #define IDB_LOG_IDX_CREATE IDB_LOG_MASK(11)
00056 #define IDB_LOG_IDX_REMOVE IDB_LOG_MASK(12)
00057 #define IDB_LOG_IDX_INSERT IDB_LOG_MASK(14)
00058 #define IDB_LOG_IDX_SUPPRESS IDB_LOG_MASK(15)
00059 #define IDB_LOG_IDX_SEARCH IDB_LOG_MASK(16)
00060 #define IDB_LOG_IDX_SEARCH_DETAIL IDB_LOG_MASK(13)
00061 #define IDB_LOG_IDX_ALL (IDB_LOG_IDX_CREATE | IDB_LOG_IDX_REMOVE | \
00062 IDB_LOG_IDX_INSERT | IDB_LOG_IDX_SEARCH_DETAIL | \
00063 IDB_LOG_IDX_SUPPRESS | IDB_LOG_IDX_SEARCH)
00064
00065
00066 #define IDB_LOG_OBJ_LOAD IDB_LOG_MASK(17)
00067 #define IDB_LOG_OBJ_CREATE IDB_LOG_MASK(18)
00068 #define IDB_LOG_OBJ_UPDATE IDB_LOG_MASK(19)
00069 #define IDB_LOG_OBJ_REMOVE IDB_LOG_MASK(20)
00070 #define IDB_LOG_OBJ_ALL (IDB_LOG_OBJ_LOAD | IDB_LOG_OBJ_CREATE | \
00071 IDB_LOG_OBJ_UPDATE | IDB_LOG_OBJ_REMOVE)
00072
00073 #define IDB_LOG_OBJ_GBX IDB_LOG_MASK(42)
00074 #define IDB_LOG_OBJ_INIT IDB_LOG_MASK(43)
00075 #define IDB_LOG_OBJ_GARBAGE IDB_LOG_MASK(44)
00076 #define IDB_LOG_OBJ_COPY IDB_LOG_MASK(45)
00077
00078 #define IDB_LOG_OBJ_ALLOC (IDB_LOG_OBJ_GBX | IDB_LOG_OBJ_INIT | \
00079 IDB_LOG_OBJ_GARBAGE | IDB_LOG_OBJ_COPY)
00080
00081 #define IDB_LOG_DEV IDB_LOG_MASK(46)
00082
00083
00084 #define IDB_LOG_EXECUTE IDB_LOG_MASK(21)
00085
00086
00087 #define IDB_LOG_DATA_READ IDB_LOG_MASK(22)
00088 #define IDB_LOG_DATA_CREATE IDB_LOG_MASK(23)
00089 #define IDB_LOG_DATA_WRITE IDB_LOG_MASK(24)
00090 #define IDB_LOG_DATA_DELETE IDB_LOG_MASK(25)
00091 #define IDB_LOG_DATA_ALL (IDB_LOG_DATA_CREATE | IDB_LOG_DATA_READ | \
00092 IDB_LOG_DATA_WRITE | IDB_LOG_DATA_DELETE)
00093
00094
00095 #define IDB_LOG_OQL_EXEC IDB_LOG_MASK(26)
00096 #define IDB_LOG_OQL_RESULT IDB_LOG_MASK(30)
00097
00098
00099 #define IDB_LOG_RELSHIP IDB_LOG_MASK(27)
00100 #define IDB_LOG_RELSHIP_DETAILS IDB_LOG_MASK(28)
00101
00102 #define IDB_LOG_SCHEMA_EVOLVE IDB_LOG_MASK(29)
00103
00104 #define IDB_LOG_USER_BOTTOM 50
00105 #define IDB_LOG_USER_MAX 12
00106
00107
00108 #define IDB_LOG_USER(X) \
00109 (((X) >= 0 && (X) < IDB_LOG_USER_MAX) ? \
00110 IDB_LOG_MASK((X+IDB_LOG_USER_BOTTOM)) : \
00111 (unsigned long long)(fprintf(stderr, "out of range user log #%d\n", (X)), 0))
00112
00113
00114 #define IDB_LOG_DEFAULT (IDB_LOG_LOCAL | IDB_LOG_SERVER | IDB_LOG_CONN | \
00115 IDB_LOG_TRANSACTION | IDB_LOG_DATABASE | \
00116 IDB_LOG_ADMIN | IDB_LOG_EXCEPTION | IDB_LOG_MTX)
00117
00118
00119 #define IDB_LOG_NOLOG IDB_LOG_MASK(63)
00120
00121 namespace eyedblib {
00122 typedef unsigned long long LogMask;
00123 extern LogMask log_mask;
00124 }
00125
00126 #define IDB_LOG(L, S) \
00127 do {if (((L) & eyedblib::log_mask) == (L)) {utlog_p(#L); utlog S;}} while(0)
00128
00129 #define IDB_LOG_D(L, S) \
00130 do {if ((((L)|IDB_LOG_DEV) & eyedblib::log_mask) == ((L)|IDB_LOG_DEV)) {utlog_p(#L); utlog S;}} while(0)
00131
00132 #define IDB_LOG_X(L, S) \
00133 do {if (((L) & eyedblib::log_mask) == (L)) utlog S;} while(0)
00134
00135 #define IDB_LOG_DX(L, S) \
00136 do {if ((((L)|IDB_LOG_DEV) & eyedblib::log_mask) == ((L)|IDB_LOG_DEV)) utlog S;} while(0)
00137
00138 #define IDB_LOG_F(S) \
00139 do { \
00140 FILE *logfd; \
00141 \
00142 utlog_p("FATAL_ERROR"); \
00143 utlog S;\
00144 \
00145 logfd = utlogFDSet(stderr); \
00146 utlog_p("FATAL_ERROR"); \
00147 utlog S; \
00148 (void)utlogFDSet(logfd);\
00149 } while (0)
00150
00151 #define IDB_LOG_FX(S) \
00152 do { \
00153 utlog_p("FATAL_ERROR"); \
00154 utlog S;\
00155 } while (0)
00156
00157
00158 extern void utlogInit(const char *progName, const char *devname);
00159 extern FILE *utlogFDGet();
00160 extern FILE *utlogFDSet(FILE *);
00161 extern void utlog(const char *fmt, ...);
00162 extern void utlog_p(const char *s);
00163 extern const char *utlogDevNameGet();
00164 extern void utlogResetTimer();
00165 extern void utlogSetLogDate(int on);
00166 extern void utlogSetLogTimer(int on);
00167 extern void utlogSetLogPid(int on);
00168 extern void utlogSetLogProgName(int on);
00169
00170 #endif