|
楼主 |
发表于 2010-10-25 08:41:08
|
显示全部楼层
本帖最后由 wuyudry 于 2010-10-25 10:11 编辑
嗯。是有一点纠结。:lol
1、关于日期分割,我派生了ACE_Logging_Strategy- class ACE_Svc_Export My_Logging_Strategy :public ACE_Logging_Strategy
复制代码 每次init的时候,检查是否有自己按天数分割保存的参数,然后在检查按大小分割保存注册定时器的地方,判断是否按天数分割保存注册一个在次日00:00:00只触发一次定时器。然后再每次触发定时器的时候,触发次日的。这样OK?
2、关于时间戳呢,现在看着也挺顺眼的了。只是我现在又实现了一个自己的DEBUG宏,总觉得有些不妥的地方。用到了全局静态变量static My_Log_Msg_Callback lmg;
。有什么办法改进?- class ACE_Svc_Export My_Log_Msg_Callback : public ACE_Log_Msg_Callback
- {
- public:
- void log (ACE_Log_Record &log_record)
- {
- clog << log_record.msg_data () << ACE_TEXT("\n");
- ACE_TCHAR pbuf[ACE_Log_Record::MAXLOGMSGLEN + 16];
- ACE_TCHAR date_and_time[35];
- switch(log_record.type ())
- {
- case LM_DEBUG:
- ACE_OS::sprintf(pbuf,
- ACE_TEXT("(%d| %s) DEBUG: %s\n"),
- ACE_Thread::self (),
- ACE::timestamp (log_record.time_stamp (), date_and_time, 35),
- log_record.msg_data ());
- break;
- case LM_INFO:
- ACE_OS::sprintf(pbuf,
- ACE_TEXT("(%d| %s) INFO : %s\n"),
- ACE_Thread::self (),
- ACE::timestamp (log_record.time_stamp (), date_and_time, 35),
- log_record.msg_data ());
- break;
- case LM_WARNING:
- ACE_OS::sprintf(pbuf,
- ACE_TEXT("(%d| %s) WARN : %s\n"),
- ACE_Thread::self (),
- ACE::timestamp (log_record.time_stamp (), date_and_time, 35),
- log_record.msg_data ());
- break;
- case LM_ERROR:
- ACE_OS::sprintf(pbuf,
- ACE_TEXT("(%d| %s) ERROR: %s\n"),
- ACE_Thread::self (),
- ACE::timestamp (log_record.time_stamp (), date_and_time, 35),
- log_record.msg_data ());
- break;
- default:
- ACE_OS::sprintf(pbuf,
- ACE_TEXT("(%d| %s) UNKNOW: %s\n"),
- ACE_Thread::self (),
- ACE::timestamp (log_record.time_stamp (), date_and_time, 35),
- log_record.msg_data ());
- }
- log_record.msg_data (pbuf);
- }
- };
- static My_Log_Msg_Callback lmg;
- #define MY_DEBUG(X) \
- do { \
- int const __ace_error = ACE_Log_Msg::last_error_adapter (); \
- ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \
- if(!ACE_LOG_MSG->msg_callback()){\
- ACE_LOG_MSG->msg_callback(&lmg);\
- ACE_LOG_MSG->set_flags (ACE_Log_Msg::MSG_CALLBACK); ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR || ACE_Log_Msg::LOGGER);}\
- ace___->conditional_set (__FILE__, __LINE__, 0, __ace_error); \
- ace___->log X; \
- } while (0)
复制代码 |
|