00001 #ifndef logging_macros_H
00002 #define logging_macros_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef __cplusplus
00029 #error This is a C++ include file and cannot be used from plain C
00030 #endif
00031
00032 #include "loggingLogger.h"
00033 #include "loggingLogTrace.h"
00034 #include "loggingGetLogger.h"
00035 #include <iostream>
00036 #include <acsutilTimeStamp.h>
00037
00038 #define LM_DELOUSE 010000
00039
00049 #define LOG(priority, routine, text) \
00050 if (getLogger()!=0) \
00051 { \
00052 getLogger()->log(priority, text, __FILE__, __LINE__, routine); \
00053 } \
00054 else \
00055 { \
00056 std::cerr << "SEVERE LOGGING ERROR - getLogger() returned NULL: file="; \
00057 std::cerr << __FILE__ << ", line=" << __LINE__ << std::endl; \
00058 }
00059
00060
00071 #define LOG_FULL(logPriority, logRoutine, logMessage, logAudience, logArray, logAntenna) \
00072 if (getLogger()!=0) \
00073 { \
00074 Logging::BaseLog::LogRecord lr; \
00075 lr.priority = Logging::ace2acsPriority(logPriority); \
00076 lr.message = logMessage; \
00077 lr.file = __FILE__; \
00078 lr.line = __LINE__; \
00079 lr.method = logRoutine; \
00080 lr.timeStamp = getTimeStamp(); \
00081 LoggingProxy::audience(logAudience); \
00082 LoggingProxy::array(logArray); \
00083 LoggingProxy::antenna(logAntenna); \
00084 LoggingProxy::Flags(LM_SOURCE_INFO | LM_RUNTIME_CONTEXT); \
00085 getLogger()->log(lr); \
00086 LoggingProxy::audience(NULL); \
00087 } \
00088 else \
00089 { \
00090 std::cerr << "SEVERE LOGGING ERROR - getLogger() returned NULL: file="; \
00091 std::cerr << __FILE__ << ", line=" << __LINE__ << std::endl; \
00092 }
00093
00103 #define LOG_WITH_ANTENNA_CONTEXT(logPriority, logRoutine, logMessage, logArray, logAntenna) \
00104 if (getLogger()!=0) \
00105 { \
00106 Logging::BaseLog::LogRecord lr; \
00107 lr.priority = Logging::ace2acsPriority(logPriority); \
00108 lr.message = logMessage; \
00109 lr.file = __FILE__; \
00110 lr.line = __LINE__; \
00111 lr.method = logRoutine; \
00112 lr.timeStamp = getTimeStamp(); \
00113 LoggingProxy::array(logArray); \
00114 LoggingProxy::antenna(logAntenna); \
00115 LoggingProxy::Flags(LM_SOURCE_INFO | LM_RUNTIME_CONTEXT); \
00116 getLogger()->log(lr); \
00117 } \
00118 else \
00119 { \
00120 std::cerr << "SEVERE LOGGING ERROR - getLogger() returned NULL: file="; \
00121 std::cerr << __FILE__ << ", line=" << __LINE__ << std::endl; \
00122 }
00123
00132 #define LOG_TO_AUDIENCE(logPriority, logRoutine, logMessage, logAudience) \
00133 if (getLogger()!=0) \
00134 { \
00135 Logging::BaseLog::LogRecord lr; \
00136 lr.priority = Logging::ace2acsPriority(logPriority); \
00137 lr.message = logMessage; \
00138 lr.file = __FILE__; \
00139 lr.line = __LINE__; \
00140 lr.method = logRoutine; \
00141 lr.timeStamp = getTimeStamp(); \
00142 LoggingProxy::audience(logAudience); \
00143 LoggingProxy::Flags(LM_SOURCE_INFO | LM_RUNTIME_CONTEXT); \
00144 getLogger()->log(lr); \
00145 LoggingProxy::audience(NULL); \
00146 } \
00147 else \
00148 { \
00149 std::cerr << "SEVERE LOGGING ERROR - getLogger() returned NULL: file="; \
00150 std::cerr << __FILE__ << ", line=" << __LINE__ << std::endl; \
00151 }
00152
00165 #define LOG_RECORD(logPriority, logMessage, logFile, logLine, logRoutine, logTime, logSource) \
00166 if (getLogger()!=0) \
00167 { \
00168 Logging::BaseLog::LogRecord lr; \
00169 lr.priority = logPriority; \
00170 lr.message = logMessage; \
00171 lr.file = logFile; \
00172 lr.line = logLine; \
00173 lr.method = logRoutine; \
00174 lr.timeStamp = logTime; \
00175 getNamedLogger(logSource)->log(lr); \
00176 } \
00177 else \
00178 { \
00179 std::cerr << "SEVERE LOGGING ERROR - getLogger() returned NULL: file="; \
00180 std::cerr << logFile << ", line=" << logLine << std::endl; \
00181 }
00182
00183
00195 #define LOG_GLOBAL_RECORD(logPriority, logMessage, logFile, logLine, logRoutine, logTime) \
00196 if (getLogger()!=0) \
00197 { \
00198 Logging::BaseLog::LogRecord lr; \
00199 lr.priority = logPriority; \
00200 lr.message = logMessage; \
00201 lr.file = logFile; \
00202 lr.line = logLine; \
00203 lr.method = logRoutine; \
00204 lr.timeStamp = logTime; \
00205 getLogger()->log(lr); \
00206 } \
00207 else \
00208 { \
00209 std::cerr << "SEVERE LOGGING ERROR - getLogger() returned NULL: file="; \
00210 std::cerr << logFile << ", line=" << logLine << std::endl; \
00211 }
00212
00213
00222 #define STATIC_LOG(priority, routine, text) \
00223 Logging::Logger::getStaticLogger()->log(priority, text, __FILE__, __LINE__, routine);
00224
00236 #define STATIC_LOG_RECORD(logPriority, logMessage, logFile, logLine, logRoutine, logTime) \
00237 { \
00238 Logging::BaseLog::LogRecord lr; \
00239 lr.priority = logPriority; \
00240 lr.message = logMessage; \
00241 lr.file = logFile; \
00242 lr.line = logLine; \
00243 lr.method = logRoutine; \
00244 lr.timeStamp = logTime; \
00245 Logging::Logger::getStaticLogger()->log(lr); \
00246 }
00247
00257 #define STATIC_LOG_TO_AUDIENCE(priority, routine, text, logAudience) \
00258 LoggingProxy::audience(logAudience); \
00259 LoggingProxy::Flags(LM_SOURCE_INFO | LM_RUNTIME_CONTEXT); \
00260 Logging::Logger::getStaticLogger()->log(Logging::ace2acsPriority(priority), text, __FILE__, __LINE__, routine);
00261
00268 #define AUTO_TRACE(routine) \
00269 Logging::LogTrace::LogTraceSmartPtr __autoTraceLogTraceSmartPtrInstance(new Logging::LogTrace(getLogger(), routine, __FILE__, __LINE__));
00270
00277 #define AUTO_STATIC_TRACE(routine) \
00278 Logging::LogTrace::LogTraceSmartPtr __autoTraceLogTraceSmartPtrInstance(new Logging::LogTrace(Logging::Logger::getStaticLogger(), routine, __FILE__, __LINE__));
00279
00287 #define LOG_TO_DEVELOPER(logPriority, logMessage) \
00288 LOG_TO_AUDIENCE(logPriority, __PRETTY_FUNCTION__, logMessage, log_audience::DEVELOPER);
00289
00297 #define STATIC_LOG_TO_DEVELOPER(logPriority, logMessage) \
00298 STATIC_LOG_TO_AUDIENCE(logPriority, __PRETTY_FUNCTION__, logMessage, log_audience::DEVELOPER);
00299
00307 #define LOG_TO_OPERATOR( logPriority, logMessage) \
00308 LOG_TO_AUDIENCE(logPriority, __PRETTY_FUNCTION__, logMessage, log_audience::OPERATOR);
00309
00317 #define STATIC_LOG_TO_OPERATOR( logPriority, logMessage) \
00318 STATIC_LOG_TO_AUDIENCE(logPriority, __PRETTY_FUNCTION__, logMessage, log_audience::OPERATOR);
00319
00327 #define LOG_TO_SCIENCE( logPriority, logMessage) \
00328 LOG_TO_AUDIENCE(logPriority, __PRETTY_FUNCTION__, logMessage, log_audience::SCILOG);
00329
00337 #define STATIC_LOG_TO_SCIENCE( logPriority, logMessage) \
00338 STATIC_LOG_TO_AUDIENCE(logPriority, __PRETTY_FUNCTION__, logMessage, log_audience::SCILOG);
00339
00350 #define LOG_TO_SCILOG( logPriority, logMessage) \
00351 LOG_TO_AUDIENCE(logPriority, __PRETTY_FUNCTION__, logMessage, log_audience::SCILOG);
00352
00363 #define STATIC_LOG_TO_SCILOG( logPriority, logMessage) \
00364 STATIC_LOG_TO_AUDIENCE(logPriority, __PRETTY_FUNCTION__, logMessage, log_audience::SCILOG);
00365
00375 #define LOG_TO_AUDIENCE_WITH_LOGGER(logPriority, logMessage, logAudience, logger) \
00376 if (logger != 0) { \
00377 Logging::BaseLog::LogRecord lr; \
00378 lr.priority = Logging::ace2acsPriority(logPriority); \
00379 lr.message = logMessage; \
00380 lr.file = __FILE__; \
00381 lr.line = __LINE__; \
00382 lr.method = __PRETTY_FUNCTION__; \
00383 lr.timeStamp = ::getTimeStamp(); \
00384 LoggingProxy::audience(logAudience); \
00385 LoggingProxy::Flags(LM_SOURCE_INFO | LM_RUNTIME_CONTEXT); \
00386 logger->log(lr); \
00387 } else { \
00388 std::cerr << "SEVERE LOGGING ERROR - getLogger() returned NULL: file="; \
00389 std::cerr << __FILE__ << ", line=" << __LINE__ << std::endl; \
00390 }
00391
00400 #define LOG_TO_OPERATOR_WITH_LOGGER( logPriority, logMessage, logger) \
00401 LOG_TO_AUDIENCE_WITH_LOGGER(logPriority, logMessage, log_audience::OPERATOR, logger);
00402
00411 #define LOG_TO_DEVELOPER_WITH_LOGGER(logPriority, logMessage, logger) \
00412 LOG_TO_AUDIENCE_WITH_LOGGER(logPriority, logMessage, log_audience::DEVELOPER, logger);
00413 #endif