00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _PASSENGER_LOGGING_H_
00019 #define _PASSENGER_LOGGING_H_
00020
00021 #include <sys/types.h>
00022 #include <unistd.h>
00023 #include <ostream>
00024
00025 namespace Passenger {
00026
00027 using namespace std;
00028
00029 extern int _debugLevel;
00030 extern ostream *_logStream;
00031 extern ostream *_debugStream;
00032
00033 void setDebugFile(const char *logFile = NULL);
00034
00035
00036
00037
00038 #define P_LOG(expr) \
00039 do { \
00040 if (Passenger::_logStream != 0) { \
00041 *Passenger::_logStream << \
00042 "[" << getpid() << ":" << __FILE__ << ":" << __LINE__ << "] " << \
00043 expr << std::endl; \
00044 } \
00045 } while (false)
00046
00047
00048
00049
00050
00051 #define P_WARN(expr) P_LOG(expr)
00052
00053
00054
00055
00056
00057 #define P_ERROR(expr) P_LOG(expr)
00058
00059
00060
00061
00062
00063 #define P_DEBUG(expr) P_TRACE(1, expr)
00064
00065 #ifdef PASSENGER_DEBUG
00066 #define P_TRACE(level, expr) \
00067 do { \
00068 if (Passenger::_debugLevel >= level) { \
00069 if (Passenger::_debugStream != 0) { \
00070 *Passenger::_debugStream << \
00071 "[" << getpid() << ":" << __FILE__ << ":" << __LINE__ << "] " << \
00072 expr << std::endl; \
00073 } \
00074 } \
00075 } while (false)
00076 #else
00077 #define P_TRACE(level, expr) do { } while (false)
00078 #endif
00079
00080 }
00081
00082 #endif
00083