log4cplus使用帮助文档基础详解

来源:互联网 发布:淘宝一般星期几流量高 编辑:程序博客网 时间:2024/06/10 06:06

一个简单的记录日志至文件或者(标准输出及错误文件),不包括系统日志。

直接上代码:

LogFile.h

[cpp] view plaincopyprint?
  1. #ifndef LOG_FILE_INC  
  2. #define LOG_FILE_INC  
  3.   
  4. class LogFile  
  5. {  
  6. public:  
  7.    LogFile() ;  
  8.    virtual ~LogFile() ;  
  9.   
  10.    static void open( const char *logFName_ ) ;  
  11.    static void close() ;  
  12.    static void puts( const char *str ) ;  
  13.    static void date( const char *prefixStr ) ;  
  14.    static void hostname( const char *prefixStr ) ;  
  15.    static void printf( const char *msg , ... ) ;  
  16.    static FILE *getFD() { return outFD ; } ;  
  17.   
  18. private:  
  19.    static char        *logFName ;  
  20.    static FILE        *outFD ;  
  21. };  
  22.   
  23. #endif  

LogFile.cpp

[cpp] view plaincopyprint?
  1. #include "LogFile.h"  
  2. #include "time.h"  
  3. #include "unistd.h"  
  4.   
  5. FILE *LogFile::outFD = NULL ;  
  6. char *LogFile::logFName = NULL ;  
  7.   
  8.   
  9. LogFile::LogFile()  
  10. {  
  11. }  
  12.   
  13.   
  14. LogFile::~LogFile()  
  15. {  
  16. }  
  17.   
  18. void LogFile::open( const char *logFName_ )  
  19. {  
  20.    if ( outFD != NULL )  
  21.       error("LogFile::open - outFD != NULL. File already open.") ;  
  22.   
  23.    if ( (logFName_ == NULL) || (logFName_[0] == '\0') )  
  24.       return ;  
  25.   
  26.    if ( strcmp( logFName_ , "stdout" ) == 0 )  
  27.       outFD = stdout ;  
  28.    else if ( strcmp( logFName_ , "stderr" ) == 0 )  
  29.       outFD = stderr ;  
  30.    else  
  31.    {  
  32.       logFName = new char[strlen(logFName_)+1] ;  
  33.       strcpy( logFName , logFName_ ) ;  
  34.   
  35.       if ( (outFD = fopen( logFName , "wb" )) == NULL )  
  36.          error("LogFile::init - error opening log file: %s" , logFName) ;  
  37.    }  
  38. }  
  39.   
  40.   
  41. void LogFile::close()  
  42. {  
  43.    if ( (outFD != NULL) && (outFD != stdout) && (outFD != stderr) )  
  44.       fclose( outFD ) ;  
  45.    outFD = NULL ;  
  46.    delete [] logFName ;  
  47.    logFName = NULL ;  
  48. }  
  49.   
  50. void LogFile::puts( const char *str )  
  51. {  
  52.    if ( outFD == NULL )  
  53.       return ;  
  54.   
  55.    if ( (str == NULL) || (str[0] == '\0') )  
  56.       error("LogFile::puts - str undefined") ;  
  57.   
  58.    fputs( str , outFD ) ;  
  59.    fflush( outFD ) ;  
  60. }  
  61.   
  62.   
  63. void LogFile::date( const char *prefixStr )  
  64. {  
  65.    if ( outFD == NULL )  
  66.       return ;  
  67.   
  68.    if ( prefixStr != NULL )  
  69.    {  
  70.       fprintf( outFD , "%s " , prefixStr ) ;  
  71.    }  
  72.   
  73.    time_t t = time(NULL) ;  
  74.    fputs( ctime( &t ) , outFD ) ;  
  75.    fflush( outFD ) ;  
  76. }  
  77.   
  78. void LogFile::hostname( const char *prefixStr )  
  79. {  
  80.    if ( outFD == NULL )  
  81.       return ;  
  82.   
  83.    if ( prefixStr != NULL )  
  84.    {  
  85.       fprintf( outFD , "%s " , prefixStr ) ;  
  86.    }  
  87.   
  88.    char str[100] ;  
  89.    if ( gethostname( str , 100 ) < 0 )  
  90.    {  
  91.       fprintf( outFD , "UNKNOWN HOST\n" ) ;  
  92.    }  
  93.    else  
  94.    {  
  95.       fprintf( outFD , "%s\n" , str ) ;  
  96.    }  
  97.    fflush( outFD ) ;  
  98. }  
  99.   
  100.   
  101. void LogFile::printf( const char *msg , ... )  
  102. {  
  103.    if ( outFD == NULL )  
  104.       return ;  
  105.   
  106.    va_list args ;  
  107.    va_start( args , msg ) ;  
  108.    vfprintf( outFD , msg , args ) ;  
  109.    va_end(args);  
  110.    fflush( outFD ) ;  
  111. }  
原创粉丝点击