Deleted the rlog folder
[o-du/l2.git] / src / rlog / rl_postproc.cpp
diff --git a/src/rlog/rl_postproc.cpp b/src/rlog/rl_postproc.cpp
deleted file mode 100644 (file)
index fa17d28..0000000
+++ /dev/null
@@ -1,747 +0,0 @@
-/*******************************************************************************
-################################################################################
-#   Copyright (c) [2017-2019] [Radisys]                                        #
-#                                                                              #
-#   Licensed under the Apache License, Version 2.0 (the "License");            #
-#   you may not use this file except in compliance with the License.           #
-#   You may obtain a copy of the License at                                    #
-#                                                                              #
-#       http://www.apache.org/licenses/LICENSE-2.0                             #
-#                                                                              #
-#   Unless required by applicable law or agreed to in writing, software        #
-#   distributed under the License is distributed on an "AS IS" BASIS,          #
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
-#   See the License for the specific language governing permissions and        #
-#   limitations under the License.                                             #
-################################################################################
-*******************************************************************************/
-
-/********************************************************************20**
-
-     Name:     Radisys Logging Framework
-     Type:     C++ source file
-     Desc:     This file contains logging framework implementation.
-     File:     postproc.cpp
-
-*********************************************************************21*/
-///////////////////////////////////////////////////////////////////////////////
-// @ description: This is source file  contains the implementaion of binary log
-// postprocessor and has ability to connect to remote node and print live logs. 
-///////////////////////////////////////////////////////////////////////////////
-
-#include <iostream>
-#include <fstream>
-#include <string>
-#include <sstream>
-#include <map>
-#include <list>
-#include <algorithm>
-#include <unistd.h>
-#include <pthread.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <getopt.h>
-#include <stdarg.h>
-#include <arpa/inet.h>
-#include <fcntl.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <netdb.h>
-#include <sys/types.h>
-#include <arpa/inet.h>
-#include "rl_interface.h"
-#include "rl_rlog.h"
-
-#define TEST_MODE
-
-namespace cmdlinearg {
-int g_port = 0;
-std::string g_sFileDb;  /* File DB */
-std::string g_sLogDb;   /* Log DB */
-std::string g_sOutFile; /* Output file */
-std::string g_sBinLogFile; /* Input binary log file */
-std::string g_ipAddr;
-}
-
-typedef struct
-{
-  int lineno;
-  std::string modName;
-  std::string file;
-  std::string logStr;
-
-} LOG_INFO;
-
-static struct option long_options[] =
-{
-   {"port",   required_argument,   0, 'p'},
-   {"logdb",   required_argument,   0, 'l'},
-   {"ofile",  required_argument,   0, 'o'},
-   {"blog",   required_argument,   0, 'b'},
-   {"ipaddr",   required_argument,   0, 'i'},
-   {0, 0, 0, 0}
-};
-
-std::map<unsigned short, std::string> g_mFileInfo;
-std::map<LOGID, LOG_INFO> g_mLogInfo;
-FILE* g_fp=stderr;
-uint32_t g_ttiCount = 0;
-time_t g_basetimeSec;
-
-void readCmdLineArgs(int argc,char **argv);
-void printLogTime(LOGTIME & ltime);
-void loadLogDb();
-void printUsage();
-void logHexDump(ARGDATA & log);
-bool invalidLogId(LOGID logId);
-void openLogFile(const char* file);
-void logLevN(LOGDATA & log, LOG_INFO & logInfo, const char* fmtStr, ...);
-void logLevS(LOGDATA & log, LOG_INFO & logInfo, const char* fmtStr, const char *logStr);
-void logString(ARGDATA & log);
-void logIntArg(ARG4DATA* log);
-void logArgSpl(SPL_ARGDATA* log);
-void processLogs(int fd, bool (*fpReadLog)(int, ARGDATA &));
-
-bool readRemoteLogs(int sockfd, ARGDATA & log);
-bool readFileLogs(int fd, ARGDATA & log);
-int openBinLogFile();
-int connectToLogServer();
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @arg[in] argc  - Number of arguments
-// @arg[in] argv - Command line arguments
-// This is main functions, which calls a function to parse command line arguments. Then it loads
-// log metadata into memory. And then based on if its remote logging or binary log file parsing
-// passes apropriate function pointer to read and convert logs.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-  readCmdLineArgs(argc, argv);
-  loadLogDb();
-
-  if( !cmdlinearg::g_sBinLogFile.empty() ) 
-  {
-    if( !cmdlinearg::g_sOutFile.empty() )
-    {
-      openLogFile(cmdlinearg::g_sOutFile.c_str());
-
-      processLogs(openBinLogFile(), readFileLogs);
-      fclose(g_fp);
-    }
-  }
-
-  if( cmdlinearg::g_port != 0 ) {
-
-    if( !cmdlinearg::g_sOutFile.empty() ) {
-      openLogFile(cmdlinearg::g_sOutFile.c_str());
-    }
-      
-
-    processLogs(connectToLogServer(), readRemoteLogs);
-
-    fclose(g_fp);
-  }
-   return 0;
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] file - Input log file name
-// This function opens the log file in write mode.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void openLogFile(const char* file)
-{
-   g_fp = fopen(file, "w+");
-   
-  if( g_fp == NULL ) 
-  {
-      fprintf(stderr, "Failed to open log file %s\n", file);
-      _exit(0);
-   }
-
-   fprintf(stderr, "Log Output will be written in %s\n", file);
-}
-
-uint32_t swap_uint32( uint32_t val )
-{
-    val = ((val << 8) & 0xFF00FF00 ) | ((val >> 8) & 0xFF00FF ); 
-    return (val << 16) | (val >> 16);
-}
-
-
-unsigned long EndianSwap32(unsigned long x)
-{
-    unsigned long y=0;
-    y += (x & 0x000000FF)<<24;
-    y += (x & 0xFF000000)>>24;
-    y += (x & 0x0000FF00)<<8;
-    y += (x & 0x00FF0000)>>8;
-    return y;
-}
-
-void print_hex(const char* str, const uint8_t *p, int len)
-{
-  fprintf(stderr, "%s HEX \n", str);
-  for(int i=0; i<len; i++ ) fprintf(stderr, "%d ", p[i]);
-  fprintf(stderr, "\n");
-
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// This function open the log file in binary mode and checks if file header is correct or not.
-// It also sets the environment variable for given time zone in log file, so that time information
-// is converted to correct time zone times.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-int openBinLogFile()
-{
-  int fd = open(cmdlinearg::g_sBinLogFile.c_str(), O_RDONLY );
-
-  if( fd == -1) {
-      fprintf(stderr, "Failed to open log file %s\n", cmdlinearg::g_sBinLogFile.c_str());
-    _exit(0);
-  }
-
-  FILE_HEADER fileHdr;
-
-  int len = read(fd, (void*)&fileHdr, sizeof(FILE_HEADER));
-
-  if( fileHdr.END_MARKER != 0xFFFF ) {
-    fprintf(stderr, "Invalid file header\n");
-    _exit(0);
-  }
-
-  fprintf(stderr, "FILE ENDIAN: %s\n", fileHdr.endianType == big_endian ? "BIG ENDIAN" : "LITTLE ENDIAN");
-  fprintf(stderr, "TIME ZONE: %s\n", fileHdr.szTimeZone);
-
-  setenv("TZ", fileHdr.szTimeZone, 1);
-  tzset();
-
-  if( fileHdr.endianType == big_endian ) {
-  }
-  g_basetimeSec = fileHdr.time_sec;
-  return fd;
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// This function connects to remote application which is using binary logging framework. If 
-// connection is failed log application exits.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-int connectToLogServer()
-{
-  int sockfd;
-  struct addrinfo hints;
-  struct addrinfo *res = NULL;
-  struct addrinfo *result = NULL;
-  int errcode;
-  char addrstr[100];
-  void *ptr = NULL;
-  struct sockaddr_in serv_addr;
-  struct sockaddr_in6 serv_addr6;
-  void *sockServAddr = NULL;
-  int ai_family = AF_UNSPEC;
-  int size = 0;
-
-  /* ccpu00147898 fixes */
-  memset(&hints, 0, sizeof(hints));
-  memset(&serv_addr, 0, sizeof(serv_addr));
-  memset(&serv_addr6, 0, sizeof(serv_addr6));
-  hints.ai_family = PF_UNSPEC;
-  hints.ai_socktype = SOCK_STREAM;
-  hints.ai_flags |= AI_CANONNAME;
-
-  errcode = getaddrinfo(cmdlinearg::g_ipAddr.c_str(), NULL, &hints, &res);
-  if(errcode != 0)
-  {
-    perror ("getaddrinfo");
-    return -1;
-  }
-
-  result = res;
-  while(res)
-  {
-    inet_ntop(res->ai_family, res->ai_addr->sa_data, addrstr, 100);
-
-    switch(res->ai_family)
-    {
-      case AF_INET:
-        ptr = &((struct sockaddr_in *) res->ai_addr)->sin_addr;
-        serv_addr.sin_addr = ((struct sockaddr_in *) res->ai_addr)->sin_addr;
-        sockServAddr = &serv_addr;
-        ai_family = res->ai_family; 
-        serv_addr.sin_family = res->ai_family;
-        serv_addr.sin_port = htons(cmdlinearg::g_port);
-        size =  sizeof(serv_addr);
-        break;
-      case AF_INET6:
-        ptr = &((struct sockaddr_in6 *) res->ai_addr)->sin6_addr;
-        sockServAddr = &serv_addr6; 
-        /* Copy IPv6 address(16bytes) into the destination */ 
-        memcpy((unsigned char*)serv_addr6.sin6_addr.s6_addr, (unsigned char *)
-         &((struct sockaddr_in6 *) res->ai_addr)->sin6_addr, 16);
-        ai_family = res->ai_family;
-        serv_addr6.sin6_family = res->ai_family;
-        serv_addr6.sin6_port = htons(cmdlinearg::g_port);
-        size =  sizeof(serv_addr6);
-        break;
-      default:
-        sockServAddr = NULL;
-        break;
-    }
-
-    if(ptr != NULL)
-    {
-       inet_ntop(res->ai_family, ptr, addrstr, 100);
-       printf ("IPv%d address: %s (%s)\n", res->ai_family == PF_INET6 ? 6 : 4,
-             addrstr, res->ai_canonname);
-    }
-    res = res->ai_next;
-  }
-  if(sockServAddr == NULL || size == 0)
-  {
-     fprintf(stderr, "Not able to parse server address\n");
-     _exit(0);
-  }
-
-  if( (sockfd = socket(ai_family, SOCK_STREAM,0)) < 0 ) {
-    fprintf(stderr, "Failed to create socket\n");
-    _exit(0);
-  }
-  
-  if( connect(sockfd, (const sockaddr*)sockServAddr, size) < 0 ) {
-    perror("ERROR Connecting");
-    _exit(0);
-  }
-
-  if(result != NULL)
-  {
-    freeaddrinfo(result);
-  }
-  return sockfd;
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] sockfd - Socket file descriptor
-// @paramp[in] log  - Log data buffer
-// This function reads the log header and remaining log from socket descriptor. Will return false
-// if socket operation fails.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-bool readRemoteLogs(int sockfd, ARGDATA & log)
-{
-  int len;
-
-  while( (len = recv(sockfd, (void*)&log.logData, RLOG_FIXED_LENGTH_BUFFER_SIZE, MSG_WAITALL)) == 0 );
-  if( len < 0 ) {
-    return false;
-  }
-
-
-  return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] fd - input file descriptor
-// @param[out] log - Log header 
-// This function will read the log header and returns success if able to read.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-bool readFileLogs(int fd, ARGDATA & log)
-{
-  int len = read(fd, (void*)&log.logData, sizeof(LOGDATA));
-
-  if( len <= 0 ) {
-    return false;
-  }
-
-#ifdef RLOG_MULTI_CIRCULAR_BUFFER
-  if( log.logData.len && read(fd, (void*)log.buf, log.logData.len) <= 0 ) {
-    return false;
-  }
-#else
-   uint16_t size = RLOG_FIXED_LENGTH_BUFFER_SIZE - sizeof(LOGDATA);
-//  if( log.logData.len && read(fd, (void*)log.buf, size) <= 0 ) {
-  if( read(fd, (void*)log.buf, size) <= 0 ) {
-    return false;
-  }
-#endif
-
-  return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] log1 - LOG 
-// @param[in] log2 - Second Log
-// This function compares the TTI of two consecutive logs.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-bool cmp_tti(ARGDATA & log1, ARGDATA & log2)
-{
-  return log2.logData.logTime.ms_tti > log1.logData.logTime.ms_tti ? true : false;
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] log - Log data
-// This function calculates the time based on TTI & time reference associated with it. And thne 
-// calls the function to print logs in aprpriate text format.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void printLog(ARGDATA & log)
-{
-
-  if( invalidLogId(log.logData.logId) )
-    return;
-  
-  switch( log.logData.argType )
-  {
-    case LOG_ARG_INT:
-      logIntArg((ARG4DATA*)&log);
-      break;
-
-    case  LOG_ARG_STR:
-      logString(log);
-      break;
-
-    case LOG_ARG_HEX:
-      logHexDump(log);
-      break;
-
-    case LOG_ARG_SPL:
-      logArgSpl((SPL_ARGDATA*)&log);
-      break;
-  }
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] fd - File or socket descriptor
-// @param[in] fpReadLog - Function pointer which reads either file or socket based log
-// This function reads the binary log file and does sorting of logs based on TTI and then calls the
-// function to print it
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void processLogs(int fd, bool (*fpReadLog)(int, ARGDATA &))
-{
-  ARGDATA log;
-  bool bSortingRequired = false, bStartBuffering = false;
-  std::list<ARGDATA> logList;
-
-  while((*fpReadLog)(fd, log)) 
-  {
-    if( log.logData.logId == L_TIME_DELIMITER ) 
-    {
-      bStartBuffering = (bStartBuffering == false) ? true : false;
-      if( bStartBuffering == true ) {
-        bSortingRequired = true;
-        continue;
-      }
-    }
-
-    if( bStartBuffering ) {
-      logList.push_back(log);
-      continue;
-    }
-  
-    if( bSortingRequired ) {
-      logList.sort(cmp_tti);  
-      std::for_each(logList.begin(), logList.end(), printLog);
-      logList.clear();
-      bSortingRequired = false;
-      bStartBuffering = false;
-      continue;
-    }
-
-    printLog(log);
-  }
-
-  /* connection was closed due to some error, but we still have some logs */
-  if( bStartBuffering && !logList.empty() ) 
-  {
-    logList.sort(cmp_tti);  
-    std::for_each(logList.begin(), logList.end(), printLog);
-  }
-
-  close(fd);
-}
-
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] log - LOG Data
-// This function convert binary log with integer data type into text format.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void logIntArg(ARG4DATA* log)
-{
-#ifdef TEST_MODE
-//  printf("LOG ARG: INT, LEVEL: %s\n", g_logStr[log->logData.logLevel]);
-#endif
-  
-  LOG_INFO & logInfo = g_mLogInfo[log->logData.logId];
-  logLevN(log->logData,logInfo,logInfo.logStr.c_str(),log->arg1,log->arg2,log->arg3,log->arg4); 
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] log - LOG Data
-// This function converts binary log containg string into text format.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void logString(ARGDATA & log)
-{
-#ifdef TEST_MODE
-//  printf("LOG ID %ld LOG ARG STRING, LEVEL: %s\n", log.logData.logId, g_logStr[log.logData.logLevel]);
-#endif
-  
-  LOG_INFO & logInfo = g_mLogInfo[log.logData.logId];
-  logLevS(log.logData, logInfo, logInfo.logStr.c_str(), log.buf); 
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] log - LOG Data
-// This function converts binary log containg hex dump into readable text format.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void logHexDump(ARGDATA & log)
-{
-#ifdef TEST_MODE
-//  printf("LOG ARG HEX, LEVEL: %s\n", g_logStr[log.logData.logLevel]);
-#endif
-  
-  LOG_INFO & logInfo = g_mLogInfo[log.logData.logId];
-
-  char szHex[MAX_LOG_BUF_SIZE*3];
-   hextostr(szHex, log.buf, log.logData.len);
-
-  logLevN(log.logData, logInfo, logInfo.logStr.c_str(), szHex); 
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] log - LOG Data
-// @param[in] logInfo - Log information structure reference
-// @param[in] fmtStr - Formatted string
-// This function prints log into console or log file.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void logLevN(LOGDATA & log, LOG_INFO & logInfo, const char* fmtStr, ...)
-{
-   va_list argList;
-  const char* file = logInfo.file.c_str();
-
-  printLogTime(log.logTime);
-   fprintf(g_fp, "[%s]%s:%d\n%s:", logInfo.modName.c_str(), file, logInfo.lineno, g_logStr[log.logLevel]);
-
-   va_start(argList,fmtStr);
-   vfprintf(g_fp, fmtStr, argList);
-   va_end(argList);
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] log - LOG Data
-// @param[in] logInfo - Log information structure reference
-// @param[in] fmtStr - Formatted string
-// This function prints string log into console or log file.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void logLevS(LOGDATA & log, LOG_INFO & logInfo, const char* fmtStr, const char* logStr)
-{
-   const char* file = logInfo.file.c_str();
-   std::string argStr(logStr, log.len);
-   printLogTime(log.logTime);
-   fprintf(g_fp, "[%s]%s:%d\n%s:", logInfo.modName.c_str(), file, logInfo.lineno, g_logStr[log.logLevel]);
-   fprintf(g_fp, fmtStr, argStr.c_str());
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] log - LOG Data
-// @param[in] logInfo - Log information structure reference
-// @param[in] fmtStr - Formatted string
-// This function prints log into console or log file.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void logLevSpl(SPL_ARGDATA* log, LOG_INFO & logInfo, const char* fmtStr, ...)
-{
-   va_list argList;
-  const char* file = logInfo.file.c_str();
-
-  printLogTime(log->logData.logTime);
-   fprintf(g_fp, "[%s]%s:%d\n%s:%s:%d:", logInfo.modName.c_str(), file, logInfo.lineno, g_logStr[log->logData.logLevel], g_splStr[log->splEnum], log->splArg);
-
-   va_start(argList,fmtStr);
-   vfprintf(g_fp, fmtStr, argList);
-   va_end(argList);
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] log - LOG Data
-// This function converts binary log with special arguments into text format.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void logArgSpl(SPL_ARGDATA* log)
-{
-#ifdef TEST_MODE
-//  printf("LOG ARG SPL, LEVEL: %s\n", g_logStr[log->logData.logLevel]);
-#endif
-  LOG_INFO & logInfo = g_mLogInfo[log->logData.logId];
-  const char* file = logInfo.file.c_str();
-
-  logLevSpl(log, logInfo, logInfo.logStr.c_str(),log->arg1, log->arg2, log->arg3, log->arg4);
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] ltime - Log time
-// This function prints log time using standard c formating function fprintf
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void printLogTime(LOGTIME & ltime)
-{
-  struct tm* tm;
-  time_t curTimeSec;
-  uint32_t secElapsedFromBeg;
-  uint32_t ttiNum; 
-  uint32_t miliseconds;
-
-  ttiNum = ltime.ms_tti;
-  secElapsedFromBeg = ttiNum/1000;
-  miliseconds = ttiNum%1000;
-  curTimeSec   = g_basetimeSec + secElapsedFromBeg;
-
-  /* Obtain the time of day, and convert it to a tm struct. --*/
-  tm = localtime (&curTimeSec);
-
-  if(NULL != tm) 
-   {
-      fprintf(g_fp,"[%d-%d-%d %d:%d:%d.%03d]", tm->tm_mday, tm->tm_mon+1, tm->tm_year+1900,
-            tm->tm_hour, tm->tm_min,tm->tm_sec,miliseconds);
-   }
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @param[in] logId - Log id which is unique to each log
-// This function checks if the given log id is valid based on the logdb information loaded into 
-// memory.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-bool invalidLogId(LOGID logId)
-{
-   /* if this is a time reference this is valid log */
-   if( g_mLogInfo.find(logId) == g_mLogInfo.end() )
-   {
-      if(logId != L_TIME_REFERENCE)
-      {
-         fprintf(stderr, "Invalid log id %d\n",logId);
-      }
-      return true;
-   }
-   return false;
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// This function parse and reads the logdb file. Extracts the information and stores into map data
-// structure.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void loadLogDb()
-{
-  std::ifstream logdb(cmdlinearg::g_sLogDb.c_str());
-
-  if(logdb.is_open() == false) {
-    fprintf(stderr, "Failed to open file %s\n", cmdlinearg::g_sLogDb.c_str());
-    _exit(0);
-  }
-
-  LOGID logId; LOG_INFO logInfo;
-  std::string line;
-   std::string & lstr = logInfo.logStr;
-  
-  while( getline(logdb, line) )
-  {
-    std::istringstream iss(line);
-    int pos = 0, newpos=0;
-
-    logId = atol( line.substr(pos, newpos=line.find(';', pos)).c_str() );
-
-    pos = newpos+1;
-    logInfo.lineno = atol( line.substr(pos, (newpos=line.find(';', pos)) - pos).c_str() );
-
-    pos = newpos+1;
-    logInfo.modName = line.substr(pos, (newpos=line.find(';', pos)) - pos);
-
-    pos = newpos+3;
-    logInfo.file = line.substr(pos, (newpos=line.find('\"', pos)) - pos);
-
-      pos=line.find('\"',newpos+1) + 1;
-    logInfo.logStr = line.substr(pos, (newpos=line.find_last_of("\"", pos)) - pos);
-      lstr.erase(std::remove(lstr.begin(),lstr.end(),'\"')++,lstr.end());
-
-
-#ifdef TEST_MODE_0
-    std::cout << "LOG Id:" << logId << " FILE:" << logInfo.file << " lineno:" << logInfo.lineno;
-    std::cout << " MOD Name: " << logInfo.modName << std::endl;
-    std::cout << "LOG STR:[" << logInfo.logStr << "]" <<  std::endl;
-#endif
-
-    logInfo.logStr+= "\n\n";
-
-    g_mLogInfo[logId] = logInfo;
-  }
-
-  logdb.close();
-
-  logInfo.file = "NULL";
-  logInfo.lineno = 0;
-  logInfo.modName = "RLOG";
-  logInfo.logStr =  RLOG_SEGFAULT_STR; 
-  g_mLogInfo[L_SIGSEGV] = logInfo;
-  
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// @arg[in] argc  - Number of arguments
-// @arg[in] argv - Command line arguments
-// This function parses the command line input parameters.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void readCmdLineArgs(int argc,char **argv)
-{
-  using namespace cmdlinearg;
-   /* getopt_long stores the option index here */
-   int c, option_index = 0;
-
-   while(  (c = getopt_long(argc, argv, "p:f:l:o:b:i:", long_options,&option_index)) != -1 )
-   {
-      switch(c)
-       {
-           case 'p':
-                std::cout<<"option -p with value = " << optarg << std::endl;
-                cmdlinearg::g_port = atoi(optarg);
-                break;
-           case 'f':
-                std::cout<<"option -f with value = "<< optarg << std::endl;
-                cmdlinearg::g_sFileDb = optarg;
-                break;
-           case 'l':
-                std::cout<<"option -l with value = "<< optarg << std::endl;
-                cmdlinearg::g_sLogDb = optarg;
-                break;
-           case 'o': 
-                std::cout<<"option -o with value = " << optarg << std::endl;
-                cmdlinearg::g_sOutFile = optarg;
-                break;
-           case 'b': 
-                std::cout<<"option -b with value = " << optarg << std::endl;
-                cmdlinearg::g_sBinLogFile = optarg;
-                break;
-           case 'i': 
-                std::cout<<"option -i with value = " << optarg << std::endl;
-                cmdlinearg::g_ipAddr = optarg;
-                break;
-        defult:
-          std::cout << "Invalid arguments" << std::endl;
-          exit(0);
-    }
-  }
-
-//  if( g_port == 0 && g_sBinLogFile.empty() )
-//    printUsage();
-
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// This functin prints the binary log application usage.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void printUsage()
-{
-  printf("Usage: postproc [-f <filedb> ] [-l <logdb>] [-b <binlog> | -p <port> ] [-o <outfile>] \n");
-  printf("\t[--filedb | -p <input file db > ]\n");
-  printf("\t[--logdb  | -l <input log db > ]\n");
-  printf("\t[--binlog | -b <input binary log file> ]\n");
-  printf("\t[--ofile  | -o <output text log file> ]\n");
-  printf("\t[--port   | -p <port number> ]\n");
-  _exit(0);
-}
-
-/**********************************************************************
-         End of file
-**********************************************************************/