submitting patch from enterprise version
[csql.git] / include / Debug.h
blob6107ffbad355500d4259ef032a0f6af7d74a6c8e
1 /***************************************************************************
2  *                                                                         *
3  *    Copyright (C) Lakshya Solutions Ltd. All rights reserved.            *
4  *                                                                         *
5  ***************************************************************************/
7 #ifndef DEBUG_H
8 #define DEBUG_H
9 #include<ErrorType.h>
10 //#define DEBUG 1
11 extern int DebugDM_Alloc;
12 extern int DebugDM_VarAlloc;
13 extern int DebugDM_Lock;
14 extern int DebugDM_Transaction;
15 extern int DebugDM_UndoLog;
16 extern int DebugDM_RedoLog;
17 extern int DebugDM_Index;
18 extern int DebugDM_HashIndex;
19 extern int DebugDM_TreeIndex;
20 extern int DebugDM_SystemDatabase;
21 extern int DebugDM_Database;
22 extern int DebugDM_Table;
23 extern int DebugDM_Predicate;
24 extern int DebugDM_Iterator;
25 extern int DebugDM_Process;
26 extern int DebugDM_Network;
27 extern int DebugDM_Gateway;
28 extern int DebugDM_Adapter;
29 extern int DebugDM_SqlLog;
30 extern int DebugDM_ReplServer;
31 extern int DebugDM_ReplTool;
32 extern int DebugDM_CacheServer;
33 extern int DebugDM_TEST;
34 extern int DebugDM_Warning;
36 int printStackTrace();
37 extern int printError1(DbRetVal val, char* fname, int lno, char *format, ...);
39 #define printError(a, ...) printError1(a, __FILE__, __LINE__, __VA_ARGS__)
41 enum DebugModule
43     DM_Alloc = 0,
44     DM_VarAlloc,
45     DM_Lock,
46     DM_Transaction,
47     DM_UndoLog,
48     DM_RedoLog,
49     DM_Index,
50     DM_HashIndex,
51     DM_TreeIndex,
52     DM_SystemDatabase,
53     DM_Database,
54     DM_Table,
55     DM_Predicate,
56     DM_Iterator,
57     DM_Process,
58     DM_Network,
59     DM_Gateway,
60     DM_Adapter,
61     DM_SqlLog,
62     DM_ReplServer,
63     DM_ReplTool,
64     DM_CacheServer,
65     DM_TEST,
66     DM_Warning
68 static char moduleNames[][20] =
70     "Alloc", "VariableAlloc", "Lock", "Trans", "UndoLog", "RedoLog", "Index",
71     "HashIndex", "TreeIndex", "SysDb", "Db", "Table", "Predicate", "Iter", 
72     "Procmgmt", "Network", "Gateway", "Adapter", "SqlLog", "ReplServer", 
73     "ReplTool", "CacheServer", "TEST", "Warning"
76 extern int printDebug1(int module, char *fname, int lineno, char *format, ...);
79 #ifdef DEBUG
80 #define printDebug(a, ...) printDebug1(a, __FILE__, __LINE__, __VA_ARGS__)
81 #else
82 #define printDebug(...) ;
83 #endif
85 //Logging
87 #define MAX_TRACE_LOG_LENGTH 1024
89 enum LogLevel
91     LogOff = 0,
92     LogFine,
93     LogFiner,
94     LogFinest
97 static char     levelNames[][10] =
99      "OFF", "FINE", "FINER", "FINEST"
101 #include<Mutex.h>
102 class Logger
104     int fdLog;  //file descriptor
105     LogLevel configLevel;   //configuration file setting is cached here.
106     void rollOverIfRequired();
107     public:
108     int log(LogLevel level, char* filename, int lineNo, char *format, ...);
109     int createLogRecord(LogLevel level, char* filename, int lineNo, char* message, char **in);
110     DbRetVal startLogger(char *filename, bool isCreate = false);
111     void stopLogger();
114 #define logFinest(logger, ...) \
116   (logger).log(LogFinest, __FILE__, __LINE__, __VA_ARGS__);\
119 #define logFiner(logger, ...) \
121   (logger).log(LogFiner, __FILE__, __LINE__, __VA_ARGS__);\
124 #define logFine(logger, ...) \
126   (logger).log(LogFine, __FILE__, __LINE__, __VA_ARGS__);\
130 #endif