在文章<<ACE日志系统之C/S模式配置文件详解>>(http://blog.csdn.net/arose616725/article/details/7767915)中讲到C/S模式能支持日志文件的多文件化, ACE能不能仿造C/S模式实现本机日志的多文件化呢? 通过测试验证,是可行的! 测试程序代码如下:
#include "ace/Logging_Strategy.h"
#include "ace/argv.h"
#include "ace/Reactor.h"
#include "ace/Task.h"
class CMyTask : public ACE_Task<ACE_NULL_SYNCH>
{
public:
void start()
{
activate();
}
int svc()
{
for (int i = 0; i < 10000; i++)
{
ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("测试日志:%d\n"), i));
Sleep(1000);
}
return 0;
}
};
int main(int argc, char* argv[])
{
//日志策略类 通过定时器实时检查日志文件大小 以实现分割日志
ACE_Logging_Strategy logStrategy;
logStrategy.log_msg(ACE_LOG_MSG);
//ACE_ARGV如下的构造函数参数为server.conf的日志策略参数 详见server.conf说明
ACE_ARGV logArg("-s d:/log.txt -f STDERR|OSTREAM|VERBOSE -i 1 -m 1 -N 10");
logStrategy.init(logArg.argc(), logArg.argv());
//模拟日志输出
CMyTask myTask;
myTask.start();
//由于用到了定时器反应器 所以...
ACE_Reactor::instance ()->run_reactor_event_loop ();
return 0;
}