关于仿制的一个ACE跟踪类

本文介绍了一种仿照ACE库中ACE_Trace类实现的跟踪类,该类增加了自定义标题的功能,并展示了其实现代码及测试示例。

ACE有一个跟踪类ACE_Trace,本文为了弄清这个跟踪类,并增强一些功能,自己仿制一个Trace跟踪类,这个类完全模仿ACE_Trace类,只是在开始增加了一个标题。这个标题你可以在#define时进行定制。

以下为头文件:

//Trace.h


//Trace.h:
//

#pragmaonce

#defineACE_NDEBUG0
#defineACE_NTRACE0


#include
"ace/log_msg.h"
#include
"ace/Object_Manager.h"
classTrace
...{
public:
Trace(
constACE_TCHAR*prefix,
constACE_TCHAR*name,
intline,
constACE_TCHAR*file)
...{
this->prefix_=prefix;
this->name_=name;
this->line_=line;
this->file_=file;

ACE_Log_Msg
*lm=ACE_LOG_MSG;
if(lm->tracing_enabled()
&&lm->trace_active()==0)
...{
lm
->trace_active(1);
ACE_DEBUG((LM_TRACE,
ACE_TEXT(
"%s%*s(%t)calling%sinfile'%s'")
ACE_TEXT(
"online%d "),
this->prefix_,
Trace::nesting_indent_
*lm->inc(),
ACE_TEXT(
""),
this->name_,
this->file_,
this->line_));
lm
->trace_active(0);
}

}


voidsetLine(intline)
...{
this->line_=line;
}


~Trace(void)
...{
ACE_Log_Msg
*lm=ACE_LOG_MSG;
if(lm->tracing_enabled()
&&lm->trace_active()==0)
...{
lm
->trace_active(1);
ACE_DEBUG
((LM_TRACE,
ACE_TEXT(
"%s%*s(%t)leaving%sinfile'%s'")
ACE_TEXT(
"online%d "),
this->prefix_,
Trace::nesting_indent_
*lm->dec(),
ACE_TEXT(
""),
this->name_,
this->file_,
this->line_));
lm
->trace_active(0);
}

}


private:
enum...{nesting_indent_=3};
constACE_TCHAR*prefix_;
constACE_TCHAR*name_;
constACE_TCHAR*file_;
intline_;
}
;


#defineTRACE_PREFIXACE_TEXT("TRACE")

#if(ACE_NTRACE==1)
#defineTRACE(X)
#defineTRACE_RETURN(V)
#defineTRACE_RETURN_VOID()
#else
#defineTRACE(X)
Trace____(TRACE_PREFIX,
ACE_TEXT(X),
__LINE__,
ACE_TEXT(__FILE__))
#defineTRACE_RETURN(V)
do...{____.setLine(__LINE__);returnV;}while(0)

#defineTRACE_RETURN_VOID()
do...{____.setLine(__LINE__);}while(0)
#endif

下面为测试程序:

//testTrace.cpp:Definestheentrypointfortheconsoleapplication.
//

#include
"stdafx.h"

#include
"trace.h"


inttest2()
...{
TRACE(ACE_TEXT(
"test2"));
return0;
}


inttest()
...{
TRACE(ACE_TEXT(
"Test"));
test2();
return0;
}


int_tmain(intargc,_TCHAR*argv[])
...{
TRACE(ACE_TEXT(
"main"));

test();


return0;
}


以上程序皆是在vs2005上测试通过。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值