免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1165 | 回复: 0
打印 上一主题 下一主题

看代码调试 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-17 09:29 |只看该作者 |倒序浏览

                //the follow code redefine LOG to save all the log into
  //the new file DHCP_LOG_FILE_PATH
  
  #define COREGA_LOG_DHCPD 1
  #ifndef COREGA_LOG_DHCPD
  void udhcp_logging(int level, const char *fmt, ...)
  {
          va_list p;
          va_list p2;
  
          va_start(p, fmt);
          __va_copy(p2, p);
          if(!daemonized) {
                  vprintf(fmt, p);
                  putchar('\n');
          }
          vsyslog(level, fmt, p2);
          va_end(p);
  }
  #else   //COREGA save the dhcp log another place
  
  #define LOG(level, str, args...) udhcp_logging(level, str, ## args)
  #define DHCP_LOG_FILE_PATH "/var/log/messages_dhcp"
  #define MAX_LOG_FILE_SIZE   10000  //10k
  
  long  int GetFilesize(FILE *stream)
  {
      long curpos, length;
  
      curpos = ftell(stream);
      fseek(stream, 0L, SEEK_END);
      length = ftell(stream);
      fseek(stream, curpos, SEEK_SET);
      return length;
  }
  void udhcp_logging(int level, const char *fmt, ...)
  {
          va_list args;
      char m_szTempLogLine[4096];
      char *pTmpData =m_szTempLogLine;
      time_t ltime;
      FILE* m_hLogFile;
      long int lFileSize;
  
      time(&ltime);
      pTmpData += sprintf(pTmpData,"%s  ",ctime(&ltime));
      //change the enter to be space
      *(pTmpData-3)=' ';
  
      va_start(args, fmt);
      pTmpData += vsprintf(pTmpData, fmt, args); //Note that we are using the C runtime here!!
      va_end(args);
  
      //add a enter
      pTmpData += sprintf(pTmpData,"\n");
      m_hLogFile = fopen(DHCP_LOG_FILE_PATH,"a");
      if (m_hLogFile == NULL) {
          return ;
      }
  
      lFileSize = GetFilesize(m_hLogFile);
      if(fwrite(m_szTempLogLine,sizeof(char),strlen(m_szTempLogLine),m_hLogFile)!=strlen(m_szTempLogLine)
          ||lFileSize>=(long)MAX_LOG_FILE_SIZE)
      {
          //appand error, clear it and rewrite it
 
  fclose(m_hLogFile);char scmd[200];sprintf(scmd,"%s %s
%d","/usr/sbin/process_log_file.sh",DHCP_LOG_FILE_PATH,100);system(scmd);
          m_hLogFile = fopen(DHCP_LOG_FILE_PATH,"a");
          fwrite(m_szTempLogLine,sizeof(char),strlen(m_szTempLogLine),m_hLogFile);
      }
  
      fclose(m_hLogFile);
      return ;
  }
  
  #endif
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66373/showart_545609.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP