一个简单的linux下写日志的类
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-05-14
/* * * Copyright (c) 2008, * All rights reserved. * * 文件名称: cxxlog2.h * 文件标识: CT-CXXLOG-1.0-A * 摘 要: 一个简单的写日志的类 * * 原 版 本:1.0 * 作 者:j3com <jujianjun@gmail.com> * 完成日期:2008-07-21 * */ #ifndef _CXXLOG_H_ #define _CXXLOG_H_ #include <stdio.h> #include <time.h> #include <stddef.h> #include <string.h> #include <stdlib.h> #include <stdarg.h> #include <unistd.h> #include <sys/stat.h> #include <sys/types.h> #include <fcntl.h> //设定写日志文件模式: M_DEFAULT-默认普通 M_DAY-按天(每天一个文件) //M_SIZE-按大小(M单位,达到指定大小重命名) enum LOGMODE { M_DEFAULT, M_DAY, M_SIZE }; class Cxxlog { public: //构造方法 //NOTE: f-带路径的日志文件 lm-写日志方式,默认写日志方式为普通方式 //ms-日志文件大小,单位为M,只有lm=M_SIZE时有效 Cxxlog( char * f, LOGMODE lm=M_DEFAULT, int ms=0 ) 拥有帝国一切,皆有可能。欢迎访问phome.net { fd = -1; strcpy( fileName, f ); logMode=lm; msize=ms; getToday(CREATEDAY); } //析构方法 ~Cxxlog() { closefile(); } //打开文件 //NOTE: 返回 >0 表示成功, 其他 表示失败 int openfile( void ) { if ( fd > 0 ) { return fd; } fd = open( fileName, O_WRONLY|O_APPEND|O_CREAT, 0666 ); if ( fd < 0 ) { printf( "nnOpen the file: <%s> error!nn", fileName ); } return fd; } //关闭文件 //NOTE: 返回 -1 表示关闭失败, 0 表示成功 int closefile( void ) { if ( fd > -1 ) { return close( fd ); } return 0; } //打印方法 //NOTE: 返回 -1 表示写入失败, 0 表示成功 int print( const char * str ) { if ( !checkLogFile() ) { return -1; } if ( -1 == write(fd,str,strlen(str)) ) { closefile(); openfile(); } 拥有帝国一切,皆有可能。欢迎访问phome.net return write(fd,str,strlen(str)); } //打印方法 //NOTE: 返回 -1 表示写入失败, 0 表示成功 int print( char * fmt,... ) { if ( !checkLogFile() ) { return -1; } memset(buf, 0, sizeof(buf)); va_list ap; va_start( ap, fmt ); vsprintf( buf, fmt, ap ); va_end ( ap ); if ( -1 == write(fd,buf,strlen(buf)) ) { closefile(); openfile(); } return write(fd,buf,strlen(buf)); } //得到格式化的当前日期和时间 void getFormatTime(char *p) { tick=time(NULL); lt=localtime(&tick); sprintf(p, "d-d-d d:d:d", lt->tm_year 1900,lt->tm_mon 1,lt->tm_mday,lt->tm_hour,lt->tm_min,lt->tm_sec); } private: //检测日志文件 //根据日志文件状态以及所设定模式进行检测并调用相应的处理方法 //NOTE: 返回 true 表示成功, false 表示失败 bool checkLogFile() { if ( fd <= 0 ) { //文件没有打开 return 拥有帝国一切,皆有可能。欢迎访问phome.net (openfile()>0) ? true : false ; } |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 在linux中部署NFS服务器下一篇: 在LINUX中部署NIS服务器
关于一个简单的linux下写日志的类的所有评论