📄 logunit.h
字号:
#ifndef __LOGUNIT_H__
#define __LOGUNIT_H__
#include "stdio.h"
#ifdef WIN32
#include "stdafx.h"
#else // _LINUX
#include "pthread.h"
#endif
const int Max_Channels = 64;
const int Max_LogMesg = 8196;
class LogInfo{
protected:
bool LogOn[Max_Channels];
char logstring[2 * Max_LogMesg];
char header[100];
char logbuffer[5 * Max_LogMesg];
int logbuffer_len;
char label[Max_Channels][16];
char logfilename[100];
FILE* fp;
int logcount;
int maxlogcount;
int validtime_s;
int validtime_e;
int LogID;
int time;
bool logpause;
/* only when used in multi threads parallelly, mutex guard is needed.
To call Init_Mutex_Guard() to activate it*/
bool b_mutex_guard;
#ifdef WIN32
CRITICAL_SECTION mutex_guard;
#else //_Linux
pthread_mutex_t mutex_guard;
#endif
inline void Mutex_Lock(){
if(b_mutex_guard){
#ifdef WIN32
EnterCriticalSection(&mutex_guard);
#else //_Linux
pthread_mutex_lock(&mutex_guard);
#endif
}
}
inline void Mutex_UnLock(){
if(b_mutex_guard){
#ifdef WIN32
LeaveCriticalSection(&mutex_guard);
#else //_Linux
pthread_mutex_unlock(&mutex_guard);
#endif
}
}
public:
LogInfo(int maxlogcount = 10000000);
~LogInfo();
void Init_Mutex_Guard();
void AssociateFile(char* filename);
void SetID(int id){
LogID = id;
}
inline bool IsValidChannel(int lognum){
return bool(lognum>=0 && lognum<Max_Channels);
}
inline bool IsChannelOn(int lognum){return LogOn[lognum];}
void SetLogOn(int lognum);
void SetLogOff(int lognum);
void SetLabel(int lognum, char* caption);
void LogAction(int lognum,char*,...);
void LogAction(char*,...);
virtual void LogCore(int lognum,char*);
virtual bool CanLog(int lognum);
void PauseLog(bool value = true){logpause = value;}
void Setlogstartime(int value){validtime_s = value;}
void Setlogendtime(int value){validtime_e = value;}
void SetTime(int t){time = t;}
};
class LogData : public LogInfo{
public:
void LogCore(int lognum, char *);
};
#endif //__LOGUNIT_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -