⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 log.h

📁 linux程序
💻 H
字号:
#ifndef  _CTI_RDP_LOG_H_
#define  _CTI_RDP_LOG_H_

#include <stdio.h>
#include "OSHead.h"
 
#ifdef __Win32__
    #include <Afx.h>
    #include <Afxmt.h>
  //#include <limits.h>
#endif

#ifdef __REDHATLINUX__
    #include <sys/stat.h>	
    #include "OSMutex.h"
    #include "Timer.h"
    //#include "rdp_segmentstruct.h"	
    	
#endif


/*  enum LOGLEVEL
    {
	    LOG_DEBUG   = 0,
	    LOG_WARNING = 1,
	    LOG_ERROR   = 2,
	    LOG_LOG     = 3,
	    LOG_NORMAL  = 4,
    };
*/

		enum LOGCONSTANT
		{
			LogFileLength  = 100000, /// 当LOG文件的长度超过这个常数的值,重新建立一个新的日志文件
			LogMaxInterval = 3,      /// 一个日志文件最多纪录几天的日志
			MaxLogSwapFile = 7,      /// 保存几个最近几天的的日志文件
			MaxLogFilePrefixLen = 50,
			MaxLogDirectoryLen  = 50,
			LogFileTimeStampLen = 30,
			MaxLogStringLength  = 2000,
		};
		
		enum LOGTYPE
		{
			LOG_EVERY_DAY = 0,        /// 为每天保留一个日志文件
			LOG_TWO_FILE_SWAP   = 1,  /// 仅仅保留最近两天的日志文件,
			LOG_WEEK_FILE_SWAP  = 2,  /// 仅仅保留最近七天的日志文件
			LOG_MONTH_FILE_SWAP = 3,  /// 仅仅保留最近30天的日志文件
			LOG_YEAR_FILE_SWAP  = 4,  /// 仅仅保留最近360天的日志文件
		};
		
	    
	void LogPrintf(unsigned int logLevel,char *format,...);

	class Log
	{   
		friend void LogPrint();
		
	    public:

 	    //Log( unsigned int logLevel = LOG_DEBUG ,unsigned int logType = LOG_EVERY_DAY, char *logPrefix = "log", char *logDir = NULL, bool isOutputConsole = true);
	#ifdef __Win32__	
		Log( unsigned int logLevel = LOG_DEBUG ,unsigned int logType = LOG_EVERY_DAY, char *logPrefix = "log", char *logDir = ".\\log", bool isOutputConsole = false);
	#endif
	
	#ifdef __REDHATLINUX__
		Log( unsigned int logLevel = LOG_DEBUG ,unsigned int logType = LOG_EVERY_DAY, char *logPrefix = "log", char *logDir = "./log", bool isOutputConsole = false);
	#endif
		
	    ~Log(); 

   	    int OpenLog();
	    int WriteLog( char *buf);
	    int CloseLog();
	    int IsOpen();
	    int GetLogFile( char *buf);
		unsigned int GetCurrentLevel();
		
	#ifdef __Win32__	
	    void GetLogFileName(char *buf, CTime *t);
    #endif
    #ifdef __REDHATLINUX__
        void GetLogFileName(char *buf,Timer *t);
    #endif    	

		void SetLogType(unsigned int logType)   { mLogType = logType;}
		void SetLogLevel(unsigned int logLevel) { mLogLevel = logLevel;}
		bool SetLogDirectory(char *dir);
		bool SetLogFilePrefix(char *prefix);
		void SetLogConsoleOutput(bool isOutput);
		void SetWorkDirectory();
		void ClearLogDirectory();
		void SetLogRemainDay(int remainDay) {if(remainDay > 0) mLogRemainDay = remainDay;}
		// Bool8 WriteLogIntoBuf(char *str, UInt16 len);
		
		void SetFileOpenTime(Timer &t) { mFileOpenTime = t; }
		Timer GetFileOpenTime() { return mFileOpenTime; }
	
	    protected:

	    FILE *fp;
	    char mLogDirectory[ MaxLogDirectoryLen + 1  ];
	    char mLogFilePrefix[ MaxLogFilePrefixLen + 1 ];
	    bool mIsOutputConsole;
	    unsigned int mLogLevel;
		unsigned int mLogType;
	    char mCurrentFileName[MaxLogFilePrefixLen + MaxLogDirectoryLen + LogFileTimeStampLen];
	#ifdef __Win32__    
	    CCriticalSection mFileMutex;
	    CTime mLogBeginTime;
	    CTime mFileOpenTime;
	#endif  
	#ifdef __REDHATLINUX__	
        OSMutex mFileMutex;
		Timer mLogBeginTime;
	    Timer mFileOpenTime;
	#endif   

		int mLogRemainDay;
    };
    

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -