oflog/include/dcmtk/oflog/logmacro.h

Go to the documentation of this file.
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 


Generated on 6 Jan 2011 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.5.1