zoukankan      html  css  js  c++  java
  • tansen_homework

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <fcntl.h>
    
    
    //#include <iostream>
    //#include "fun.h"
    //using namespace std;
    
    #define DEBUG_LOG  /*this macro to control the debug print*/
    #ifdef DEBUG_LOG
    #define LOG_ERROR(args...) do { printf("[TS][ERR]@%u:",__LINE__); printf(args); } while (0);
    #define LOG_PRINT(args...) do { printf("[TS][LOG]"); printf(args); } while (0);
    #else
    #define LOG_ERROR(args...) do { printf("[TS][ERR]@%u:",__LINE__); printf(args); } while (0);
    #define LOG_PRINT(args...)
    #endif
    
    
    static char *file_path = "log.txt";
    #define MAX_LINE_CONTENT 512 /*assume the max line content.*/
    
    static int LineContentParse(char * pInputString)
    {
    
    	return 0;
    
    }
    
    
    static int InvokeType(char * pInputString)
    {
    	#if 0
    	char* cre="create";
    	char* upd="update";
    	char* del="delete";
    	char* ins="insert";
    
    	
    	if ( strncmp(pInputString,cre,strlen(cre))== 0 )
    	{
    
    
    	}
    
    	if ( strncmp(pInputString,upd,strlen(upd))== 0 )
    	{
    
    
    	}
    	
    	#endif
    	
    	return 0;
    
    
    }
    
    int main(int iArgc, char * apcArgv [])
    {
    	FILE *fp=NULL;
    	FILE *fp_reserved=NULL;
    	char *pBuffer=NULL;
    	char *pBuffer_reserved=NULL;/*if you use stesep , use this point to free the memory!!!!!*/
    	
    	char* end_mark1="/*!*/;";
    	char* end_mark2="'/*!*/;";
    
    	/*check the file was exist or not.*/
    	if ( access(file_path,0) )
    	{
    		LOG_ERROR("  FILE  DOESN'T EXISIT!
    ");
    		exit(-1);
    	}				
    
    	/*open and check */
    	fp  = fopen(file_path, "r"); 
    	if( NULL == fp)
    	{	
    		LOG_ERROR("  open file:%s failed
    ",file_path);
    		exit(-1);
    	}
    	
        fcntl(fileno(fp), F_SETFD, FD_CLOEXEC);
    
    	fp_reserved = fp;/*maybe you need it.*/
    
    	/*remind: donot allocate memory from stack , please allocate memory from heap, that is for programer.*/
    	pBuffer = (char *)malloc(sizeof(char)*MAX_LINE_CONTENT);
    	if(!pBuffer)
    	{
    		LOG_ERROR("  memory allocate faied
    ");
    		goto error_one;
    	}
    
    	/*remind: clear the buffer once you allocate from the heap*/
    	memset(pBuffer,0,MAX_LINE_CONTENT);
    
    	while( (fgets (pBuffer, MAX_LINE_CONTENT, fp))!= NULL )/*every time , fp will move to another line*/
    	{
    		pBuffer_reserved = pBuffer;
    
    		/*suggest api of string operation:strstr/strsep*/
    
    		/*step1: check the line valid or not, if the line is empty ?*/
    		
    		
    		/*step2: check the mark*/
    		if(strstr(pBuffer, end_mark1)!=NULL || strstr(pBuffer, end_mark2)!=NULL )
    		{
    			//LOG_PRINT(" +++++FIT
    ");
    
    			/*step3: strsep the string, and check more.*/
    
    			/*give you a example:  http://baike.baidu.com/view/2466295.htm*/
    			printf("
    
    ");
    			LOG_PRINT(" buffer-before: %s
    ",pBuffer);
    
    			//!!!!!strsep will change the point of  pBuffer.
    			LOG_PRINT(" buffer-after: %s
    ",strsep(&pBuffer_reserved,end_mark1));
    
    			#if 0
    			 if( Index_KMP (fp_reserved, key, fp))
    			 {
    					/*do your operation here.*/
    					InvokeType();
    
    			 }
    			#endif
    			
    		}
    
    		/*clear the data since it will be used for next line.*/
    		memset(pBuffer,0,MAX_LINE_CONTENT);
    
    	}
    
    	/*actually, you can use sleep to debug your code , that is a usefull way.*/
    	//sleep(2);
    error_two:
    	free(pBuffer);
    	pBuffer_reserved=NULL;/*donot forget to set the point to NULL.*/
    	pBuffer=NULL;
    	
    error_one:
    
    	fclose(fp);
    	fp = NULL;
    	return 0;
    
    }
    

     LOG:

    [xichen@SSDEV002 file_tansen]$ gcc mysql_log_analysis.c
    [xichen@SSDEV002 file_tansen]$ ./a.out
    
    
    [TS][LOG] buffer-before: DELIMITER /*!*/;
    
    [TS][LOG] buffer-after: DELIMITER
    
    
    [TS][LOG] buffer-before: ROLLBACK/*!*/;
    
    [TS][LOG] buffer-after: ROLLBACK
    
    
    [TS][LOG] buffer-before: '/*!*/;
    
    [TS][LOG] buffer-after: '
    
    
    [TS][LOG] buffer-before: use `tansen`/*!*/;
    
    [TS][LOG] buffer-after: use `tansen`
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1383996813/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1383996813
    
    
    [TS][LOG] buffer-before: SET @@session.pseudo_thread_id=36/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.pseudo_thread_id=36
    
    
    [TS][LOG] buffer-before: SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1
    
    
    [TS][LOG] buffer-before: SET @@session.sql_mode=0/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.sql_mode=0
    
    
    [TS][LOG] buffer-before: SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1
    
    
    [TS][LOG] buffer-before: /*!C gbk *//*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET @@session.character_set_client=28,@@session.collation_connection=28,@@session.collation_server=8/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.character_set_client=28,@@session.collation_connection=28,@@session.collation_server=8
    
    
    [TS][LOG] buffer-before: SET @@session.lc_time_names=0/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.lc_time_names=0
    
    
    [TS][LOG] buffer-before: SET @@session.collation_database=DEFAULT/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.collation_database=DEFAULT
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: use `mysql`/*!*/;
    
    [TS][LOG] buffer-after: use `mysql`
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1383997879/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1383997879
    
    
    [TS][LOG] buffer-before: /*!C utf8 *//*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1383997891/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1383997891
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: DELIMITER /*!*/;
    
    [TS][LOG] buffer-after: DELIMITER
    
    
    [TS][LOG] buffer-before: ROLLBACK/*!*/;
    
    [TS][LOG] buffer-after: ROLLBACK
    
    
    [TS][LOG] buffer-before: '/*!*/;
    
    [TS][LOG] buffer-after: '
    
    
    [TS][LOG] buffer-before: DELIMITER /*!*/;
    
    [TS][LOG] buffer-after: DELIMITER
    
    
    [TS][LOG] buffer-before: '/*!*/;
    
    [TS][LOG] buffer-after: '
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356654/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356654
    
    
    [TS][LOG] buffer-before: SET @@session.pseudo_thread_id=36/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.pseudo_thread_id=36
    
    
    [TS][LOG] buffer-before: SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1
    
    
    [TS][LOG] buffer-before: SET @@session.sql_mode=0/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.sql_mode=0
    
    
    [TS][LOG] buffer-before: SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1
    
    
    [TS][LOG] buffer-before: /*!C gbk *//*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET @@session.character_set_client=28,@@session.collation_connection=28,@@session.collation_server=8/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.character_set_client=28,@@session.collation_connection=28,@@session.collation_server=8
    
    
    [TS][LOG] buffer-before: SET @@session.lc_time_names=0/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.lc_time_names=0
    
    
    [TS][LOG] buffer-before: SET @@session.collation_database=DEFAULT/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.collation_database=DEFAULT
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: use `tansen`/*!*/;
    
    [TS][LOG] buffer-after: use `tansen`
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356654/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356654
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356672/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356672
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356672/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356672
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356701/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356701
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356701/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356701
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356719/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356719
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356719/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356719
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356758/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356758
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356758/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356758
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356861/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356861
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356861/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356861
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356923/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356923
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356923/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356923
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    [xichen@SSDEV002 file_tansen]$
    
  • 相关阅读:
    通过HttpListener实现简单的Http服务
    WCF心跳判断服务端及客户端是否掉线并实现重连接
    NHibernate初学六之关联多对多关系
    NHibernate初学五之关联一对多关系
    EXTJS 4.2 资料 跨域的问题
    EXTJS 4.2 资料 控件之Grid 那些事
    EXTJS 3.0 资料 控件之 GridPanel属性与方法大全
    EXTJS 3.0 资料 控件之 Toolbar 两行的用法
    EXTJS 3.0 资料 控件之 combo 用法
    EXTJS 4.2 资料 控件之 Store 用法
  • 原文地址:https://www.cnblogs.com/chen-blog/p/3598232.html
Copyright © 2011-2022 走看看