OFFIS DCMTK  Version 3.6.0
logmacro.h
Go to the documentation of this file.
1 // Module: Log4CPLUS
2 // File: loggingmacros.h
3 // Created: 8/2003
4 // Author: Tad E. Smith
5 //
6 //
7 // Copyright 2003-2009 Tad E. Smith
8 //
9 // Licensed under the Apache License, Version 2.0 (the "License");
10 // you may not use this file except in compliance with the License.
11 // You may obtain a copy of the License at
12 //
13 // http://www.apache.org/licenses/LICENSE-2.0
14 //
15 // Unless required by applicable law or agreed to in writing, software
16 // distributed under the License is distributed on an "AS IS" BASIS,
17 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 // See the License for the specific language governing permissions and
19 // limitations under the License.
20 
24 #ifndef _LOG4CPLUS_LOGGING_MACROS_HEADER_
25 #define _LOG4CPLUS_LOGGING_MACROS_HEADER_
26 
27 #include "dcmtk/oflog/config.h"
28 #include "dcmtk/oflog/streams.h"
29 
30 
31 #if defined(LOG4CPLUS_DISABLE_FATAL) && !defined(LOG4CPLUS_DISABLE_ERROR)
32 #define LOG4CPLUS_DISABLE_ERROR
33 #endif
34 #if defined(LOG4CPLUS_DISABLE_ERROR) && !defined(LOG4CPLUS_DISABLE_WARN)
35 #define LOG4CPLUS_DISABLE_WARN
36 #endif
37 #if defined(LOG4CPLUS_DISABLE_WARN) && !defined(LOG4CPLUS_DISABLE_INFO)
38 #define LOG4CPLUS_DISABLE_INFO
39 #endif
40 #if defined(LOG4CPLUS_DISABLE_INFO) && !defined(LOG4CPLUS_DISABLE_DEBUG)
41 #define LOG4CPLUS_DISABLE_DEBUG
42 #endif
43 #if defined(LOG4CPLUS_DISABLE_DEBUG) && !defined(LOG4CPLUS_DISABLE_TRACE)
44 #define LOG4CPLUS_DISABLE_TRACE
45 #endif
46 
47 #if defined(_MSC_VER) && _MSC_VER >= 1400
48 # define LOG4CPLUS_MACRO_FUNCTION() __FUNCSIG__
49 #elif defined(__GNUC__)
50 # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
51 # define LOG4CPLUS_MACRO_FUNCTION() __PRETTY_FUNCTION__
52 # else
53 # define LOG4CPLUS_MACRO_FUNCTION() __FUNCTION__
54 # endif
55 #else
56 # define LOG4CPLUS_MACRO_FUNCTION() ""
57 #endif
58 
59 #if defined (LOG4CPLUS_SINGLE_THREADED)
60 
61 namespace log4cplus
62 {
63 
64 extern LOG4CPLUS_EXPORT tostringstream _macros_oss;
65 
66 LOG4CPLUS_EXPORT void _clear_tostringstream (tostringstream &);
67 
68 } // namespace log4cplus
69 
70 #define LOG4CPLUS_MACRO_BODY(logger, logEvent, logLevel) \
71  do { \
72  if((logger).isEnabledFor(log4cplus::logLevel##_LOG_LEVEL)) { \
73  log4cplus::_clear_tostringstream (log4cplus::_macros_oss); \
74  log4cplus::_macros_oss << logEvent << OFStringStream_ends; \
75  OFSTRINGSTREAM_GETOFSTRING(log4cplus::_macros_oss, _macros_string) \
76  (logger).forcedLog(log4cplus::logLevel##_LOG_LEVEL, \
77  _macros_string, __FILE__, __LINE__, \
78  LOG4CPLUS_MACRO_FUNCTION()); \
79  } \
80  } while (0)
81 
82 
83 #else // defined (LOG4CPLUS_SINGLE_THREADED)
84 
85 #define LOG4CPLUS_MACRO_BODY(logger, logEvent, logLevel) \
86  do { \
87  if((logger).isEnabledFor(log4cplus::logLevel##_LOG_LEVEL)) { \
88  log4cplus::tostringstream _log4cplus_buf; \
89  _log4cplus_buf << logEvent << OFStringStream_ends; \
90  OFSTRINGSTREAM_GETOFSTRING(_log4cplus_buf, _macro_string) \
91  (logger).forcedLog(log4cplus::logLevel##_LOG_LEVEL, \
92  _macro_string, __FILE__, __LINE__, \
93  LOG4CPLUS_MACRO_FUNCTION()); \
94  } \
95  } while (0)
96 
97 
98 #endif // defined (LOG4CPLUS_SINGLE_THREADED)
99 
100 #define LOG4CPLUS_MACRO_STR_BODY(logger, logEvent, logLevel) \
101  do { \
102  if((logger).isEnabledFor(log4cplus::logLevel##_LOG_LEVEL)) { \
103  (logger).forcedLog(log4cplus::logLevel##_LOG_LEVEL, \
104  logEvent, __FILE__, __LINE__, \
105  LOG4CPLUS_MACRO_FUNCTION()); \
106  } \
107  } while(0)
108 
109 
116 #if !defined(LOG4CPLUS_DISABLE_TRACE)
117 #define LOG4CPLUS_TRACE_METHOD(logger, logEvent) \
118  log4cplus::TraceLogger _log4cplus_trace_logger(logger, logEvent, \
119  __FILE__, __LINE__);
120 #define LOG4CPLUS_TRACE(logger, logEvent) \
121  LOG4CPLUS_MACRO_BODY (logger, logEvent, TRACE)
122 #define LOG4CPLUS_TRACE_STR(logger, logEvent) \
123  LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, TRACE)
124 #else
125 #define LOG4CPLUS_TRACE_METHOD(logger, logEvent) do { } while (0)
126 #define LOG4CPLUS_TRACE(logger, logEvent) do { } while (0)
127 #define LOG4CPLUS_TRACE_STR(logger, logEvent) do { } while (0)
128 #endif
129 
135 #if !defined(LOG4CPLUS_DISABLE_DEBUG)
136 #define LOG4CPLUS_DEBUG(logger, logEvent) \
137  LOG4CPLUS_MACRO_BODY (logger, logEvent, DEBUG)
138 #define LOG4CPLUS_DEBUG_STR(logger, logEvent) \
139  LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, DEBUG)
140 #else
141 #define LOG4CPLUS_DEBUG(logger, logEvent) do { } while (0)
142 #define LOG4CPLUS_DEBUG_STR(logger, logEvent) do { } while (0)
143 #endif
144 
150 #if !defined(LOG4CPLUS_DISABLE_INFO)
151 #define LOG4CPLUS_INFO(logger, logEvent) \
152  LOG4CPLUS_MACRO_BODY (logger, logEvent, INFO)
153 #define LOG4CPLUS_INFO_STR(logger, logEvent) \
154  LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, INFO)
155 #else
156 #define LOG4CPLUS_INFO(logger, logEvent) do { } while (0)
157 #define LOG4CPLUS_INFO_STR(logger, logEvent) do { } while (0)
158 #endif
159 
165 #if !defined(LOG4CPLUS_DISABLE_WARN)
166 #define LOG4CPLUS_WARN(logger, logEvent) \
167  LOG4CPLUS_MACRO_BODY (logger, logEvent, WARN)
168 #define LOG4CPLUS_WARN_STR(logger, logEvent) \
169  LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, WARN)
170 #else
171 #define LOG4CPLUS_WARN(logger, logEvent) do { } while (0)
172 #define LOG4CPLUS_WARN_STR(logger, logEvent) do { } while (0)
173 #endif
174 
180 #if !defined(LOG4CPLUS_DISABLE_ERROR)
181 #define LOG4CPLUS_ERROR(logger, logEvent) \
182  LOG4CPLUS_MACRO_BODY (logger, logEvent, ERROR)
183 #define LOG4CPLUS_ERROR_STR(logger, logEvent) \
184  LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, ERROR)
185 #else
186 #define LOG4CPLUS_ERROR(logger, logEvent) do { } while (0)
187 #define LOG4CPLUS_ERROR_STR(logger, logEvent) do { } while (0)
188 #endif
189 
195 #if !defined(LOG4CPLUS_DISABLE_FATAL)
196 #define LOG4CPLUS_FATAL(logger, logEvent) \
197  LOG4CPLUS_MACRO_BODY (logger, logEvent, FATAL)
198 #define LOG4CPLUS_FATAL_STR(logger, logEvent) \
199  LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, FATAL)
200 #else
201 #define LOG4CPLUS_FATAL(logger, logEvent) do { } while (0)
202 #define LOG4CPLUS_FATAL_STR(logger, logEvent) do { } while (0)
203 #endif
204 
205 #endif /* _LOG4CPLUS_LOGGING_MACROS_HEADER_ */
206 


Generated on Thu Dec 20 2012 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.8.2