华为3COM交换机防病毒策略
2007-06-25 16:54
246 查看
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
/*
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
*
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
* Copyright (c) 2008,
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
* All rights reserved.
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
*
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
* 文件名称: cxxlog2.h
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
* 文件标识: CT-CXXLOG-1.0-A
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
* 摘 要: 一个简单的写日志的类
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
*
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
* 原 版 本:1.0
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
* 作 者:j3com <jujianjun@gmail.com>
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
* 完成日期:2008-07-21
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
*
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
*/
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
#ifndef _CXXLOG_H_
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
#define _CXXLOG_H_
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
#include <stdio.h>
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
#include <time.h>
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
#include <stddef.h>
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
#include <string.h>
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
#include <stdlib.h>
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
#include <stdarg.h>
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
#include <unistd.h>
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
#include <sys/stat.h>
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
#include <sys/types.h>
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
#include <fcntl.h>
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//设定写日志文件模式: M_DEFAULT-默认普通 M_DAY-按天(每天一个文件)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//M_SIZE-按大小(M单位,达到指定大小重命名)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
enum LOGMODE { M_DEFAULT, M_DAY, M_SIZE };
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
class Cxxlog
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
public:
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//构造方法
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//NOTE: f-带路径的日志文件 lm-写日志方式,默认写日志方式为普通方式
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//ms-日志文件大小,单位为M,只有lm=M_SIZE时有效
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
Cxxlog( char * f, LOGMODE lm=M_DEFAULT, int ms=0 )
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
fd = -1;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
strcpy( fileName, f );
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
logMode=lm;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
msize=ms;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
getToday(CREATEDAY);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//析构方法
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
~Cxxlog()
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
closefile();
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//打开文件
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//NOTE: 返回 >0 表示成功, 其他 表示失败
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
int openfile( void )
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( fd > 0 ) { return fd; }
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
fd = open( fileName, O_WRONLY|O_APPEND|O_CREAT, 0666 );
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( fd < 0 )
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
printf( "\n\nOpen the file: <%s> error!\n\n", fileName );
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
return fd;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//关闭文件
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//NOTE: 返回 -1 表示关闭失败, 0 表示成功
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
int closefile( void )
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( fd > -1 ) { return close( fd ); }
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
return 0;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//打印方法
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//NOTE: 返回 -1 表示写入失败, 0 表示成功
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
int print( const char * str )
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( !checkLogFile() ) { return -1; }
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( -1 == write(fd,str,strlen(str)) ) { closefile(); openfile(); }
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
return write(fd,str,strlen(str));
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//打印方法
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//NOTE: 返回 -1 表示写入失败, 0 表示成功
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
int print( char * fmt,... )
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( !checkLogFile() ) { return -1; }
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
memset(buf, 0, sizeof(buf));
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
va_list ap;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
va_start( ap, fmt );
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
vsprintf( buf, fmt, ap );
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
va_end ( ap );
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( -1 == write(fd,buf,strlen(buf)) ) { closefile(); openfile(); }
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
return write(fd,buf,strlen(buf));
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//得到格式化的当前日期和时间
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
void getFormatTime(char *p)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
tick=time(NULL);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
lt=localtime(&tick);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
sprintf(p, "%04d-%02d-%02d %02d:%02d:%02d",
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
lt->tm_year+1900,lt->tm_mon+1,lt->tm_mday,lt->tm_hour,lt->tm_min,lt->tm_sec);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
private:
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//检测日志文件
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//根据日志文件状态以及所设定模式进行检测并调用相应的处理方法
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//NOTE: 返回 true 表示成功, false 表示失败
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
bool checkLogFile()
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( fd <= 0 )
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{ //文件没有打开
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
return (openfile()>0) ? true : false ;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//根据不同的选项做对应操作
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
switch ( logMode )
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
case M_SIZE:
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
return ( 0==check_mode_size() ) ? true : false;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
case M_DAY:
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
return ( 0==check_mode_day() ) ? true : false;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
default:
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
return true;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
return true;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//指定文件大小模式下的检测方法
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//NOTE: 0 成功, 其他 失败
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
int check_mode_size()
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( fstat(fd, &logFileStat) < 0 ) { return -1; }
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
int fileSize = (int)logFileStat.st_size;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( msize*1049000 < fileSize )
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{ //文件超过定义的文件长度大小,需要将日志文件备份并且新开一个日志文件
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
char newFileName[125];
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
char suffix[30];
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
getMSizeSuffix( suffix );
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
strcpy(newFileName, fileName);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
strcat(newFileName,suffix);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( -1 == closefile() ) { return -1; }
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( -1 == rename(fileName,newFileName) ) { return -1; }
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( 0 > openfile() ) { return -1; }
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
return 0;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//日期模式下的检测方法
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//NOTE: 0 成功, 其他 失败
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
int check_mode_day()
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
getToday( TODAY );
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( strcmp(TODAY,CREATEDAY) !=0 )
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{ //当前日期和,需要将日志文件备份并且新开一个日志文件
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
char newFileName[125];
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
sprintf(newFileName,"%s.%s",fileName,TODAY);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( -1 == closefile() ) { return -1; }
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( -1 == rename(fileName,newFileName) ) { return -1; }
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
if ( 0 > openfile() ) { return -1; }
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
strcpy(CREATEDAY,TODAY);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
return 0;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//得到YYYYDDHH格式的当前日期
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
void getToday( char * today )
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
tick=time(NULL);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
lt=localtime(&tick);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
sprintf(today, "%04d%02d%02d", lt->tm_year+1900,lt->tm_mon+1,lt->tm_mday);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
//指定文件大小模式下,得到备份的新文件名的后缀
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
void getMSizeSuffix( char * suffix )
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
{
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
static int idx;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
tick=time(NULL);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
lt=localtime(&tick);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
sprintf(suffix, ".%04d%02d%02d%02d%02d%02d.%03d",
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
lt->tm_year+1900,lt->tm_mon+1,lt->tm_mday,++idx);
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
}
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
private:
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
int fd;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
char fileName[100]; //保存日志文件路径
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
struct tm * lt;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
time_t tick;
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
char buf[1024]; //规定1次写入日志操作的内容字节数
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
char TODAY[11]; //当前的YYYYMMDD格式日期
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
char CREATEDAY[11]; //文件创立时的YYYYMMDD格式日期
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
LOGMODE logMode; //定义写日志的模式
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
int msize; //定义M_SIZE写日志模式下的文件大小,单位M
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
struct stat logFileStat; //日志文件状态结构变量
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
};
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
#endif
![](http://j3com.blog.51cto.com/images/editer/InBlock.gif)
本文出自 “水滴石穿” 博客,请务必保留此出处http://j3com.blog.51cto.com/404571/88904
相关文章推荐
- 华为3COM交换机PVLAN配置使用说明
- 华为3COM交换机配置命令详解
- 华为3COM交换机配置
- 华为3COM交换机配置命令详解
- 华为 3Com 8016交换机DHCP配置
- 华为3COM交换机常用配置学习
- 华为3com系列交换机端口限速攻略
- 华为3COM交换机配置命令详解
- 华为3COM交换机防病毒策略
- 华为3COM交换机PVLAN配置使用说明
- 华为3com交换机配置相关命令
- 华为S2700 交换机详细配置
- 华为3COM路由器交换机配置命令详解
- 华为 交换机 配置STP
- 思科4500系列与华为9300系列交换机介绍与选配
- 华为 交换机简要配置手册
- 华为3COM标准访问控制列表初识
- 华为5700交换机通过外部开源protal和本地aaa用户认证的一些问题