找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3611|回复: 2

用 -m 限制日志大小怎么没有用呢?

[复制链接]
发表于 2007-12-13 23:53:41 | 显示全部楼层 |阅读模式
我的程序
-------------------------------------------------------------------------------------------------
  1. #include"ace/OS.h"
  2. #include "ace/Log_Msg.h"
  3. #include "ace/Service_Config.h"
  4. #include <ace/ACE.h>
  5. #include <ace/Configuration.h>
  6. #include <ace/OS_main.h>
  7. #include <ace/OS_NS_netdb.h>
  8. int ACE_TMAIN(int argc, ACE_TCHAR* argv[])
  9. {
  10.     if (ACE_Service_Config::open (argc,
  11.                                argv,
  12.                                ACE_DEFAULT_LOGGER_KEY,
  13.                                1,
  14.                                0,
  15.                                1) < 0)
  16.     ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"),
  17.                       ACE_TEXT ("Service Config open")),
  18.                      1);
  19.     for(int j = 0; j < 10000000; j++) {
  20.         for(int i = 0; i < 998; i++) {
  21.             ACE_DEBUG((LM_WARNING, "-"));
  22.         }
  23.         ACE_DEBUG((LM_WARNING, "\r\n"));
  24.     }
  25.    
  26.     while(1) {
  27.         ACE_OS::sleep(1);
  28.     }
  29.     return 0;
  30. }
复制代码
----------------------------------------------------------------------------------------------------------
配置文件
dynamic Logger Service_Object * ACE:_make_ACE_Logging_Strategy()
  "-m 1  -i 1 -N 1 -s log.out -f STDERR|OSTREAM   -p WARNING|~DEBUG"
我已经写了-m 1了,但是日志还是超过1K,不知道为什么?
 楼主| 发表于 2007-12-13 23:53:52 | 显示全部楼层
ACE -m 日志不是那么精确的,因为它是通过 -i 确定检查时间的,如果在那个时间内写了大量信息就有这个问题,如果你要精确的方法,建设使用回调来写日志
 楼主| 发表于 2007-12-13 23:54:02 | 显示全部楼层
谢谢楼上的朋友。
“因为它是通过 -i 确定检查时间的”是一个重要的原因。

但是我现在觉得最上面的代码得不到想要的结果最主要的原因是ACE_Reactor::instance()->run_reactor_event_loop(); 与输出写在同一个线程中。
将输出放在另一个线程中就可以在很大程度上控制文件的大小了。我将

for(int j = 0; j < 10000000; j++) {
        for(int i = 0; i < 998; i++) {
            ACE_DEBUG((LM_WARNING, "-"));
        }
        ACE_DEBUG((LM_WARNING, "\r\n"));

for(int j = 0; j < 10; j++) {
        for(int i = 0; i < 998; i++) {
            ACE_DEBUG((LM_WARNING, "-"));
        }
        ACE_DEBUG((LM_WARNING, "j = %d\r\n", j));

最后得到的结果为
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------j = 7

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------j = 8

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------j = 9
文件大小大约为3k
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-20 05:49 , Processed in 0.209473 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表