* callback.h
~cpp
#include "ace/streams.h"
#include "ace/Log_Msg.h"
#include "ace/Log_Msg_Callback.h"
#include "ace/Log_Record.h"
#include "ace/SString.h"
class Callback : public ACE_Log_Msg_Callback
{
public:
void log(ACE_Log_Record &log_record)
{
/*log_record.print(ACE_TEXT(""), 0, cerr);
log_record.print(ACE_TEXT(""), ACE_Log_Msg::VERBOSE, cerr);*/
//ver2
cerr << "Log Message Received: " << endl;
unsigned long msg_severity = log_record.type();
ACE_Log_Priority prio = ACE_static_cast(ACE_Log_Priority, msg_severity);
const ACE_TCHAR *prio_name = ACE_Log_Record::priority_name(prio);
cerr << "\nType: "
<< ACE_TEXT_ALWAYS_CHAR(prio_name)
<< endl;
cerr << "\tlength: " << log_record.length() << endl;
const time_t epoch = log_record.time_stamp().sec();
/*cerr << "\tTime_Stamp: "
<< ACE_TEXT_ALWAYS_CHAR(ACE_OS::ctime(&epoch))
<< flush;*/
cerr << "\tPid: " << log_record.pid() << endl;
ACE_CString data(">> ");
data += ACE_TEXT_ALWAYS_CHAR(log_record.msg_data());
cerr << "\tMsgData: " << data.c_str() << endl;
}
};
~cpp
#define ACE_NTRACE 0
#include "ace/Log_Msg.h"
#include "ace/streams.h"
#include "callback.h"
int ACE_TMAIN(int, ACE_TCHAR *argv[])
{
Callback *callback = new Callback;
ACE_LOG_MSG->set_flags(ACE_Log_Msg::MSG_CALLBACK);
ACE_LOG_MSG->clr_flags(ACE_Log_Msg::STDERR);
ACE_LOG_MSG->msg_callback(callback);
ACE_TRACE(ACE_TEXT("main"));
ACE_DEBUG((LM_DEBUG, ACE_TEXT("%IHi Mom\n")));
ACE_DEBUG((LM_INFO, ACE_TEXT("%IGoodnight\n")));
return 0;
}