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

📄 log.cpp

📁 3D游戏开发需要用到BSP树来经行场景渲染的管理。本代码包含完整的BSP及文件生成实现
💻 CPP
字号:
#include "log.h"

#include <stdarg.h>
#include <string.h>
#include <time.h>

#define LOG_FILE_CLIENT	"log.txt"
#define LOG_FILE_SERVER	"server_log.txt"

// Note: up to 1 argument supported
static char log_msgs[LOG_MAX_MSGS][40] = {
	"Could not open log file %s for writing.",
	"File %s not found!.",
	"File %s write error.",
	"Lex: End of file inside comment.",
	"rmapc start up."
};


CLog::CLog() {
	allowed_types = -1;

	app_log_file = fopen(LOG_FILE_CLIENT, "a");
	server_log_file = fopen(LOG_FILE_SERVER, "a");

	if(!app_log_file) {
		allowed_types &= ~(LOG_USER & LOG_APP & LOG_SYSTEM);
		Log(-1, LOG_LOG_INIT_ERROR, LOG_FILE_CLIENT);
	}
	if(!server_log_file) {
		allowed_types &= ~(LOG_SERVER);
		Log(-1, LOG_LOG_INIT_ERROR, LOG_FILE_SERVER);
	}
}

CLog::~CLog() {
	fclose(app_log_file);
	fclose(server_log_file);
}

void CLog::Log(int type, int imsg, char* arg) {
	Log(type, log_msgs[imsg], arg);
}

void CLog::Log(int type, char *msg, ...) {
	char output[256];
	time_t now = time(NULL);
	va_list args;
	va_start(args, msg);

	char* ct = ctime(&now);
	memcpy(output, ct, 24);
	output[24] = ' ';
	int size = vsnprintf(&output[25], 256-25-1, msg, args);

	if(size != -1) {
		// insert new line
		output[size + 25] = '\n';
		output[size + 26] = 0;
		size++;

	} else {
#ifdef _WIN32
		output[251] = '.';
		output[252] = '.';
		output[253] = '.';
		output[254] = '\n';
		output[255] = 0;
		size = 255 - 25;
#else
		Log(LOG_SYSTEM, "Log: Bad pointer passed\n");
		return;
#endif
	}

	// log everything to console
	fwrite(&output[25], size, 1, stdout);

	if(type & (LOG_APP | LOG_SYSTEM)) {
		fwrite(output, size + 25, 1, app_log_file);
#ifdef _DEBUG
		fflush(app_log_file);
#endif
	}

	if(type & LOG_SERVER) {
		fwrite(output, size + 25, 1, server_log_file);
#ifdef _DEBUG
		fflush(server_log_file);
#endif
	}
	va_end(args);
}

// Global logger
CLog g_CLog;

⌨️ 快捷键说明

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