📄 log.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 + -