29 #ifndef INCLUDED_GR_LOGGER_H
30 #define INCLUDED_GR_LOGGER_H
42 #include <boost/format.hpp>
52 #define GR_LOG_DECLARE_LOGPTR(logger)
53 #define GR_LOG_ASSIGN_LOGPTR(logger,name)
54 #define GR_CONFIG_LOGGER(config)
55 #define GR_CONFIG_AND_WATCH_LOGGER(config,period)
56 #define GR_LOG_GETLOGGER(logger, name)
57 #define GR_SET_LEVEL(name, level)
58 #define GR_LOG_SET_LEVEL(logger, level)
59 #define GR_GET_LEVEL(name, level)
60 #define GR_LOG_GET_LEVEL(logger, level)
61 #define GR_ADD_CONSOLE_APPENDER(logger,target,pattern)
62 #define GR_LOG_ADD_CONSOLE_APPENDER(logger,target,pattern)
63 #define GR_ADD_FILE_APPENDER(name,filename,append,pattern)
64 #define GR_LOG_ADD_FILE_APPENDER(logger,filename,append,pattern)
65 #define GR_ADD_ROLLINGFILE_APPENDER(name,filename,filesize,bkup_index,append,mode,pattern)
66 #define GR_LOG_ADD_ROLLINGFILE_APPENDER(logger,filename,filesize,bkup_index,append,mode,pattern)
67 #define GR_GET_LOGGER_NAMES(names)
68 #define GR_RESET_CONFIGURATION()
69 #define GR_DEBUG(name, msg) std::cout<<"DEBUG: "<<msg<<std::endl
70 #define GR_INFO(name, msg) std::cout<<"INFO: "<<msg<<std::endl
71 #define GR_NOTICE(name, msg) std::cout<<"NOTICE: "<<msg<<std::endl
72 #define GR_WARN(name, msg) std::cerr<<"WARN: "<<msg<<std::endl
73 #define GR_ERROR(name, msg) std::cerr<<"ERROR: "<<msg<<std::endl
74 #define GR_ALERT(name, msg) std::cerr<<"ERROR: "<<msg<<std::endl
75 #define GR_CRIT(name, msg) std::cerr<<"ERROR: "<<msg<<std::endl
76 #define GR_FATAL(name, msg) std::cerr<<"FATAL: "<<msg<<std::endl
77 #define GR_EMERG(name, msg) std::cerr<<"EMERG: "<<msg<<std::endl
78 #define GR_ERRORIF(name, cond, msg) if((cond)) std::cerr<<"ERROR: "<<msg<<std::endl
79 #define GR_ASSERT(name, cond, msg) if(!(cond)) std::cerr<<"ERROR: "<<msg<<std::endl; assert(cond)
80 #define GR_LOG_DEBUG(logger, msg) std::cout<<"DEBUG: "<<msg<<std::endl
81 #define GR_LOG_INFO(logger, msg) std::cout<<"INFO: "<<msg<<std::endl
82 #define GR_LOG_NOTICE(logger, msg) std::cout<<"NOTICE: "<<msg<<std::endl
83 #define GR_LOG_WARN(logger, msg) std::cerr<<"WARN: "<<msg<<std::endl
84 #define GR_LOG_ERROR(logger, msg) std::cerr<<"ERROR: "<<msg<<std::endl
85 #define GR_LOG_ALERT(logger, msg) std::cerr<<"ALERT: "<<msg<<std::endl
86 #define GR_LOG_CRIT(logger, msg) std::cerr<<"CRIT: "<<msg<<std::endl
87 #define GR_LOG_FATAL(logger, msg) std::cerr<<"FATAL: "<<msg<<std::endl
88 #define GR_LOG_EMERG(logger, msg) std::cerr<<"EMERG: "<<msg<<std::endl
89 #define GR_LOG_ERRORIF(logger, cond, msg) if((cond)) std::cerr<<"ERROR: "<<msg<<std::endl
90 #define GR_LOG_ASSERT(logger, cond, msg) std::cerr<<"ERROR: "<<msg<<std::endl; assert(cond)
95 #include <log4cpp/Category.hh>
96 #include <log4cpp/PropertyConfigurator.hh>
97 #include <log4cpp/FileAppender.hh>
98 #include <log4cpp/RollingFileAppender.hh>
99 #include <log4cpp/OstreamAppender.hh>
100 #include <log4cpp/PatternLayout.hh>
121 #define GR_LOG_DECLARE_LOGPTR(logger) \
122 gr_logger_ptr logger;
124 #define GR_LOG_ASSIGN_LOGPTR(logger,name) \
125 logger = gr_logger::getLogger(name);
127 #define GR_CONFIG_LOGGER(config) \
128 logger_load_config(config)
130 #define GR_CONFIG_AND_WATCH_LOGGER(config,period) \
131 logger_load_config_and_watch(config,period)
133 #define GR_LOG_GETLOGGER(logger, name) \
134 gr_logger_ptr logger = gr_logger::getLogger(name);
136 #define GR_SET_LEVEL(name, level){ \
137 gr_logger_ptr logger = gr_logger::getLogger(name);\
138 logger_set_level(logger,level);}
140 #define GR_LOG_SET_LEVEL(logger, level) \
141 logger_set_level(logger, level);
143 #define GR_GET_LEVEL(name, level){ \
144 gr_logger_ptr logger = gr_logger::getLogger(name);\
145 logger_get_level(logger,level);}
147 #define GR_LOG_GET_LEVEL(logger, level) \
148 logger_get_level(logger,level);
150 #define GR_ADD_CONSOLE_APPENDER(name,target,pattern){\
151 gr_logger_ptr logger = gr_logger::getLogger(name);\
152 logger_add_console_appender(logger,target,pattern);}
154 #define GR_LOG_ADD_CONSOLE_APPENDER(logger,target,pattern){\
155 logger_add_console_appender(logger,target,pattern);}
157 #define GR_ADD_FILE_APPENDER(name,filename,append,pattern){\
158 gr_logger_ptr logger = gr_logger::getLogger(name);\
159 logger_add_file_appender(logger,filename,append,pattern);}
161 #define GR_LOG_ADD_FILE_APPENDER(logger,filename,append,pattern){\
162 logger_add_file_appender(logger,filename,append,pattern);}
164 #define GR_ADD_ROLLINGFILE_APPENDER(name,filename,filesize,bkup_index,append,mode,pattern){\
165 gr_logger_ptr logger = gr_logger::getLogger(name);\
166 logger_add_rollingfile_appender(logger,filename,filesize,bkup_index,append,mode,pattern);}
168 #define GR_LOG_ADD_ROLLINGFILE_APPENDER(logger,filename,filesize,bkup_index,append,mode,pattern){\
169 logger_add_rollingfile_appender(logger,filename,filesize,bkup_index,append,mode,pattern);}
171 #define GR_GET_LOGGER_NAMES(names){ \
172 logger_get_logger_names(names);}
174 #define GR_RESET_CONFIGURATION(){ \
175 logger_reset_config();}
178 #define GR_DEBUG(name, msg) { \
179 gr_logger_ptr logger = gr_logger::getLogger(name);\
180 *logger<< log4cpp::Priority::DEBUG << msg << log4cpp::eol;}
182 #define GR_INFO(name, msg) { \
183 gr_logger_ptr logger = gr_logger::getLogger(name);\
184 *logger<< log4cpp::Priority::INFO << msg << log4cpp::eol;}
186 #define GR_NOTICE(name, msg) { \
187 gr_logger_ptr logger = gr_logger::getLogger(name);\
188 *logger << log4cpp::Priority::NOTICE << msg;}
190 #define GR_WARN(name, msg) { \
191 gr_logger_ptr logger = gr_logger::getLogger(name);\
192 *logger<< log4cpp::Priority::WARN << msg << log4cpp::eol;}
194 #define GR_ERROR(name, msg) { \
195 gr_logger_ptr logger = gr_logger::getLogger(name);\
196 *logger<< log4cpp::Priority::ERROR << msg << log4cpp::eol;}
198 #define GR_CRIT(name, msg) { \
199 gr_logger_ptr logger = gr_logger::getLogger(name);\
200 *logger<< log4cpp::Priority::CRIT << msg << log4cpp::eol;}
202 #define GR_ALERT(name, msg) { \
203 gr_logger_ptr logger = gr_logger::getLogger(name);\
204 *logger<< log4cpp::Priority::ALERT << msg << log4cpp::eol;}
206 #define GR_FATAL(name, msg) { \
207 gr_logger_ptr logger = gr_logger::getLogger(name);\
208 *logger<< log4cpp::Priority::FATAL << msg << log4cpp::eol;}
210 #define GR_EMERG(name, msg) { \
211 gr_logger_ptr logger = gr_logger::getLogger(name);\
212 *logger<< log4cpp::Priority::EMERG << msg << log4cpp::eol;}
214 #define GR_ERRORIF(name, cond, msg) { \
216 gr_logger_ptr logger = gr_logger::getLogger(name);\
217 *logger<< log4cpp::Priority::ERROR << msg << log4cpp::eol;};\
220 #define GR_ASSERT(name, cond, msg) { \
222 gr_logger_ptr logger = gr_logger::getLogger(name);\
223 *logger<< log4cpp::Priority::EMERG << msg << log4cpp::eol;};\
228 #define GR_LOG_DEBUG(logger, msg) { \
229 *logger << log4cpp::Priority::DEBUG << msg << log4cpp::eol;}
231 #define GR_LOG_INFO(logger, msg) { \
232 *logger << log4cpp::Priority::INFO << msg << log4cpp::eol;}
234 #define GR_LOG_NOTICE(logger, msg) { \
235 *logger << log4cpp::Priority::NOTICE << msg << log4cpp::eol;}
237 #define GR_LOG_WARN(logger, msg) { \
238 *logger << log4cpp::Priority::WARN << msg << log4cpp::eol;}
240 #define GR_LOG_ERROR(logger, msg) { \
241 *logger << log4cpp::Priority::ERROR << msg << log4cpp::eol;}
243 #define GR_LOG_CRIT(logger, msg) { \
244 *logger << log4cpp::Priority::CRIT << msg << log4cpp::eol;}
246 #define GR_LOG_ALERT(logger, msg) { \
247 *logger << log4cpp::Priority::ALERT << msg << log4cpp::eol;}
249 #define GR_LOG_FATAL(logger, msg) { \
250 *logger << log4cpp::Priority::FATAL << msg << log4cpp::eol;}
252 #define GR_LOG_EMERG(logger, msg) { \
253 *logger << log4cpp::Priority::EMERG << msg << log4cpp::eol;}
255 #define GR_LOG_ERRORIF(logger,cond, msg) { \
257 *logger<< log4cpp::Priority::ERROR << msg << log4cpp::eol;};\
261 #define GR_LOG_ASSERT(logger, cond, msg) { \
263 *logger<< log4cpp::Priority::EMERG << msg << log4cpp::eol;};\
276 GR_CORE_API void logger_load_config(
const std::string &config_filename=
"");
279 GR_CORE_API void logger_load_config_and_watch(
const std::string &config_filename,
280 unsigned int watch_period);
326 void logger_set_level(
gr_logger_ptr logger, log4cpp::Priority::Value level);
375 GR_CORE_API void logger_add_file_appender(
gr_logger_ptr logger,std::string filename,
bool append,std::string pattern);
378 size_t filesize,
int bkup_index,
bool append,mode_t mode,std::string pattern);
380 GR_CORE_API void logger_get_logger_names(std::vector<std::string>& names);
393 gr_logger(std::string config_filename)
396 logger_load_config(config_filename);
402 gr_logger(std::string config_filename,
int watchPeriodSec)
405 logger_load_config_and_watch(config_filename,watchPeriodSec);
411 if(log4cpp::Category::exists(name)){
412 gr_logger_ptr logger = &log4cpp::Category::getInstance(name);
417 gr_logger_ptr logger = &log4cpp::Category::getInstance(name);
418 logger->setPriority(log4cpp::Priority::NOTSET);
425 void set_level(std::string name,std::string level){
GR_SET_LEVEL(name,level);}
428 void get_level(std::string name,std::string &level){
GR_GET_LEVEL(name,level);}
431 void debug(std::string name,std::string msg){
GR_DEBUG(name,msg);};
434 void info(std::string name,std::string msg){
GR_INFO(name,msg);};
437 void notice(std::string name,std::string msg){
GR_NOTICE(name,msg);};
440 void warn(std::string name,std::string msg){
GR_WARN(name,msg);};
443 void error(std::string name,std::string msg){
GR_ERROR(name,msg);};
446 void crit(std::string name,std::string msg){
GR_CRIT(name,msg);};
449 void alert(std::string name,std::string msg){
GR_ALERT(name,msg);};
452 void fatal(std::string name,std::string msg){
GR_FATAL(name,msg);};
455 void emerg(std::string name,std::string msg){
GR_EMERG(name,msg);};
458 void errorIF(std::string name,
bool cond,std::string msg){
GR_ERRORIF(name,cond,msg);};
461 void gr_assert(std::string name,
bool cond,std::string msg){
GR_ASSERT(name,cond,msg);};
512 #define GR_LOG_DECLARE_LOGPTR(logger)
513 #define GR_LOG_ASSIGN_LOGPTR(logger,name)
514 #define GR_CONFIG_LOGGER(config)
515 #define GR_CONFIG_AND_WATCH_LOGGER(config,period)
516 #define GR_LOG_GETLOGGER(logger, name)
517 #define GR_SET_LEVEL(name, level)
518 #define GR_LOG_SET_LEVEL(logger, level)
519 #define GR_GET_LEVEL(name, level)
520 #define GR_LOG_GET_LEVEL(logger, level)
521 #define GR_ADD_CONSOLE_APPENDER(logger,target,pattern)
522 #define GR_LOG_ADD_CONSOLE_APPENDER(logger,target,pattern)
523 #define GR_ADD_FILE_APPENDER(name,filename,append,pattern)
524 #define GR_LOG_ADD_FILE_APPENDER(logger,filename,append,pattern)
525 #define GR_ADD_ROLLINGFILE_APPENDER(name,filename,filesize,bkup_index,append,mode,pattern)
526 #define GR_LOG_ADD_ROLLINGFILE_APPENDER(logger,filename,filesize,bkup_index,append,mode,pattern)
527 #define GR_GET_LOGGER_NAMES(names)
528 #define GR_RESET_CONFIGURATION()
529 #define GR_DEBUG(name, msg)
530 #define GR_INFO(name, msg)
531 #define GR_NOTICE(name, msg)
532 #define GR_WARN(name, msg)
533 #define GR_ERROR(name, msg)
534 #define GR_ALERT(name, msg)
535 #define GR_CRIT(name, msg)
536 #define GR_FATAL(name, msg)
537 #define GR_EMERG(name, msg)
538 #define GR_ERRORIF(name, cond, msg)
539 #define GR_ASSERT(name, cond, msg)
540 #define GR_LOG_DEBUG(logger, msg)
541 #define GR_LOG_INFO(logger, msg)
542 #define GR_LOG_NOTICE(logger, msg)
543 #define GR_LOG_WARN(logger, msg)
544 #define GR_LOG_ERROR(logger, msg)
545 #define GR_LOG_ALERT(logger, msg)
546 #define GR_LOG_CRIT(logger, msg)
547 #define GR_LOG_FATAL(logger, msg)
548 #define GR_LOG_EMERG(logger, msg)
549 #define GR_LOG_ERRORIF(logger, cond, msg)
550 #define GR_LOG_ASSERT(logger, cond, msg)