KrisLibrary  1.0.0
Logger.h
Go to the documentation of this file.
1 #ifndef KRISLIBRARY_LOGGER_H
2 #define KRISLIBRARY_LOGGER_H
3 
12 #if HAVE_LOG4CXX
13 
14 #include <log4cxx/logger.h>
15 
16 namespace KrisLibrary {
17 
18 typedef log4cxx::LoggerPtr LoggerType;
19 
27 extern LoggerType logger();
28 
39 extern LoggerType logger(const char* name);
40 
43 extern void loggerWait();
44 
47 extern void loggerWait(LoggerType logger);
48 
50 #define DEFINE_LOGGER(name) \
51  DECLARE_LOGGER(name) \
52  namespace KrisLibrary { \
53  LoggerType _logger_##name; \
54  }
55 
57 #define DECLARE_LOGGER(name) \
58  namespace KrisLibrary { \
59  extern LoggerType _logger_##name; \
60  inline LoggerType _get_logger_##name() { \
61  if (_logger_##name == NULL) \
62  _logger_##name = logger(#name); \
63  return _logger_##name; \
64  } \
65  }
66 
68 #define GET_LOGGER(name) KrisLibrary::_get_logger_##name()
69 
70 } //namespace KrisLibrary
71 
72 #else
73 
74 #include <iostream>
75 #include <stdlib.h>
76 
77 namespace KrisLibrary {
78 
79 typedef const char* LoggerType;
80 
85 inline LoggerType logger() { return NULL; }
86 
94 inline LoggerType logger(const char* name) { return name; }
95 
98 inline void loggerWait() { printf("Press enter to continue...\n"); getchar(); }
99 
102 inline void loggerWait(LoggerType logger) { printf("Press enter to continue...\n"); getchar(); }
103 
104 #define LOG4CXX_DEBUG(logger,data) { \
105  if(logger) std::cout<<logger<<": "<<data<<std::endl; \
106  else std::cout<<data<<std::endl; }
107 
108 #define LOG4CXX_INFO(logger,data) { \
109  if(logger) std::cout<<logger<<": "<<data<<std::endl; \
110  else std::cout<<data<<std::endl; }
111 
112 #define LOG4CXX_WARN(logger,data) { \
113  if(logger) std::cout<<logger<<": "<<data<<std::endl; \
114  else std::cout<<data<<std::endl; }
115 
116 #define LOG4CXX_ERROR(logger,data) { \
117  if(logger) std::cerr<<logger<<": "<<data<<std::endl; \
118  else std::cerr<<data<<std::endl; }
119 
120 #define LOG4CXX_FATAL(logger,data) { \
121  if(logger) std::cerr<<logger<<": "<<data<<std::endl; \
122  else std::cerr<<data<<std::endl; }
123 
125 #define DEFINE_LOGGER(name) \
126  DECLARE_LOGGER(name) \
127  namespace KrisLibrary { \
128  LoggerType _logger_##name; \
129  }
130 
132 #define DECLARE_LOGGER(name) \
133  namespace KrisLibrary { \
134  extern LoggerType _logger_##name; \
135  inline LoggerType _get_logger_##name() { \
136  if (_logger_##name == NULL) \
137  _logger_##name = logger(#name); \
138  return _logger_##name; \
139  } \
140  }
141 
143 #define GET_LOGGER(name) KrisLibrary::_get_logger_##name()
144 
145 } //namespace KrisLibrary
146 
147 
148 #endif // HAVE_LOG4CXX
149 
150 
151 #endif // KRISLIBRARY_LOGGER_H
void loggerWait()
If the root logger is enabled for debug level, this will cause a getchar() to be called.
Definition: Logger.h:98
Definition: Logger.h:77
LoggerType logger()
Retrieves the base logger.
Definition: Logger.h:85