00001 // Module: Log4CPLUS 00002 // File: loggingmacros.h 00003 // Created: 8/2003 00004 // Author: Tad E. Smith 00005 // 00006 // 00007 // Copyright 2003-2009 Tad E. Smith 00008 // 00009 // Licensed under the Apache License, Version 2.0 (the "License"); 00010 // you may not use this file except in compliance with the License. 00011 // You may obtain a copy of the License at 00012 // 00013 // http://www.apache.org/licenses/LICENSE-2.0 00014 // 00015 // Unless required by applicable law or agreed to in writing, software 00016 // distributed under the License is distributed on an "AS IS" BASIS, 00017 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00018 // See the License for the specific language governing permissions and 00019 // limitations under the License. 00020 00024 #ifndef _LOG4CPLUS_LOGGING_MACROS_HEADER_ 00025 #define _LOG4CPLUS_LOGGING_MACROS_HEADER_ 00026 00027 #include "dcmtk/oflog/config.h" 00028 #include "dcmtk/oflog/streams.h" 00029 00030 00031 #if defined(LOG4CPLUS_DISABLE_FATAL) && !defined(LOG4CPLUS_DISABLE_ERROR) 00032 #define LOG4CPLUS_DISABLE_ERROR 00033 #endif 00034 #if defined(LOG4CPLUS_DISABLE_ERROR) && !defined(LOG4CPLUS_DISABLE_WARN) 00035 #define LOG4CPLUS_DISABLE_WARN 00036 #endif 00037 #if defined(LOG4CPLUS_DISABLE_WARN) && !defined(LOG4CPLUS_DISABLE_INFO) 00038 #define LOG4CPLUS_DISABLE_INFO 00039 #endif 00040 #if defined(LOG4CPLUS_DISABLE_INFO) && !defined(LOG4CPLUS_DISABLE_DEBUG) 00041 #define LOG4CPLUS_DISABLE_DEBUG 00042 #endif 00043 #if defined(LOG4CPLUS_DISABLE_DEBUG) && !defined(LOG4CPLUS_DISABLE_TRACE) 00044 #define LOG4CPLUS_DISABLE_TRACE 00045 #endif 00046 00047 #if defined(_MSC_VER) && _MSC_VER >= 1400 00048 # define LOG4CPLUS_MACRO_FUNCTION() __FUNCSIG__ 00049 #elif defined(__GNUC__) 00050 # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) 00051 # define LOG4CPLUS_MACRO_FUNCTION() __PRETTY_FUNCTION__ 00052 # else 00053 # define LOG4CPLUS_MACRO_FUNCTION() __FUNCTION__ 00054 # endif 00055 #else 00056 # define LOG4CPLUS_MACRO_FUNCTION() "" 00057 #endif 00058 00059 #if defined (LOG4CPLUS_SINGLE_THREADED) 00060 00061 namespace log4cplus 00062 { 00063 00064 extern LOG4CPLUS_EXPORT tostringstream _macros_oss; 00065 00066 LOG4CPLUS_EXPORT void _clear_tostringstream (tostringstream &); 00067 00068 } // namespace log4cplus 00069 00070 #define LOG4CPLUS_MACRO_BODY(logger, logEvent, logLevel) \ 00071 do { \ 00072 if((logger).isEnabledFor(log4cplus::logLevel##_LOG_LEVEL)) { \ 00073 log4cplus::_clear_tostringstream (log4cplus::_macros_oss); \ 00074 log4cplus::_macros_oss << logEvent << OFStringStream_ends; \ 00075 OFSTRINGSTREAM_GETOFSTRING(log4cplus::_macros_oss, _macros_string) \ 00076 (logger).forcedLog(log4cplus::logLevel##_LOG_LEVEL, \ 00077 _macros_string, __FILE__, __LINE__, \ 00078 LOG4CPLUS_MACRO_FUNCTION()); \ 00079 } \ 00080 } while (0) 00081 00082 00083 #else // defined (LOG4CPLUS_SINGLE_THREADED) 00084 00085 #define LOG4CPLUS_MACRO_BODY(logger, logEvent, logLevel) \ 00086 do { \ 00087 if((logger).isEnabledFor(log4cplus::logLevel##_LOG_LEVEL)) { \ 00088 log4cplus::tostringstream _log4cplus_buf; \ 00089 _log4cplus_buf << logEvent << OFStringStream_ends; \ 00090 OFSTRINGSTREAM_GETOFSTRING(_log4cplus_buf, _macro_string) \ 00091 (logger).forcedLog(log4cplus::logLevel##_LOG_LEVEL, \ 00092 _macro_string, __FILE__, __LINE__, \ 00093 LOG4CPLUS_MACRO_FUNCTION()); \ 00094 } \ 00095 } while (0) 00096 00097 00098 #endif // defined (LOG4CPLUS_SINGLE_THREADED) 00099 00100 #define LOG4CPLUS_MACRO_STR_BODY(logger, logEvent, logLevel) \ 00101 do { \ 00102 if((logger).isEnabledFor(log4cplus::logLevel##_LOG_LEVEL)) { \ 00103 (logger).forcedLog(log4cplus::logLevel##_LOG_LEVEL, \ 00104 logEvent, __FILE__, __LINE__, \ 00105 LOG4CPLUS_MACRO_FUNCTION()); \ 00106 } \ 00107 } while(0) 00108 00109 00116 #if !defined(LOG4CPLUS_DISABLE_TRACE) 00117 #define LOG4CPLUS_TRACE_METHOD(logger, logEvent) \ 00118 log4cplus::TraceLogger _log4cplus_trace_logger(logger, logEvent, \ 00119 __FILE__, __LINE__); 00120 #define LOG4CPLUS_TRACE(logger, logEvent) \ 00121 LOG4CPLUS_MACRO_BODY (logger, logEvent, TRACE) 00122 #define LOG4CPLUS_TRACE_STR(logger, logEvent) \ 00123 LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, TRACE) 00124 #else 00125 #define LOG4CPLUS_TRACE_METHOD(logger, logEvent) do { } while (0) 00126 #define LOG4CPLUS_TRACE(logger, logEvent) do { } while (0) 00127 #define LOG4CPLUS_TRACE_STR(logger, logEvent) do { } while (0) 00128 #endif 00129 00135 #if !defined(LOG4CPLUS_DISABLE_DEBUG) 00136 #define LOG4CPLUS_DEBUG(logger, logEvent) \ 00137 LOG4CPLUS_MACRO_BODY (logger, logEvent, DEBUG) 00138 #define LOG4CPLUS_DEBUG_STR(logger, logEvent) \ 00139 LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, DEBUG) 00140 #else 00141 #define LOG4CPLUS_DEBUG(logger, logEvent) do { } while (0) 00142 #define LOG4CPLUS_DEBUG_STR(logger, logEvent) do { } while (0) 00143 #endif 00144 00150 #if !defined(LOG4CPLUS_DISABLE_INFO) 00151 #define LOG4CPLUS_INFO(logger, logEvent) \ 00152 LOG4CPLUS_MACRO_BODY (logger, logEvent, INFO) 00153 #define LOG4CPLUS_INFO_STR(logger, logEvent) \ 00154 LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, INFO) 00155 #else 00156 #define LOG4CPLUS_INFO(logger, logEvent) do { } while (0) 00157 #define LOG4CPLUS_INFO_STR(logger, logEvent) do { } while (0) 00158 #endif 00159 00165 #if !defined(LOG4CPLUS_DISABLE_WARN) 00166 #define LOG4CPLUS_WARN(logger, logEvent) \ 00167 LOG4CPLUS_MACRO_BODY (logger, logEvent, WARN) 00168 #define LOG4CPLUS_WARN_STR(logger, logEvent) \ 00169 LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, WARN) 00170 #else 00171 #define LOG4CPLUS_WARN(logger, logEvent) do { } while (0) 00172 #define LOG4CPLUS_WARN_STR(logger, logEvent) do { } while (0) 00173 #endif 00174 00180 #if !defined(LOG4CPLUS_DISABLE_ERROR) 00181 #define LOG4CPLUS_ERROR(logger, logEvent) \ 00182 LOG4CPLUS_MACRO_BODY (logger, logEvent, ERROR) 00183 #define LOG4CPLUS_ERROR_STR(logger, logEvent) \ 00184 LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, ERROR) 00185 #else 00186 #define LOG4CPLUS_ERROR(logger, logEvent) do { } while (0) 00187 #define LOG4CPLUS_ERROR_STR(logger, logEvent) do { } while (0) 00188 #endif 00189 00195 #if !defined(LOG4CPLUS_DISABLE_FATAL) 00196 #define LOG4CPLUS_FATAL(logger, logEvent) \ 00197 LOG4CPLUS_MACRO_BODY (logger, logEvent, FATAL) 00198 #define LOG4CPLUS_FATAL_STR(logger, logEvent) \ 00199 LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, FATAL) 00200 #else 00201 #define LOG4CPLUS_FATAL(logger, logEvent) do { } while (0) 00202 #define LOG4CPLUS_FATAL_STR(logger, logEvent) do { } while (0) 00203 #endif 00204 00205 #endif /* _LOG4CPLUS_LOGGING_MACROS_HEADER_ */ 00206