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

📄 logunit.h

📁 2002年
💻 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 + -