在大型项目中,完善的日志系统是排查问题的关键。Server 部分则是各类功能模块的集成入口,所有的类最终都要在这里协同工作。
1. 日志系统
利用 __FILE__ 和 __LINE__ 这两个 C/C++ 编译器预定义的特殊宏,我们可以轻松定位日志来源。
__FILE__:自动替换为当前源文件的路径或文件名(字符串)。在日志中用于标识输出来源,例如[test.cpp : ...]。__LINE__:自动替换为当前代码所在的行号(整数)。配合文件路径,能精确定位到出错的具体位置。
基于此,我们封装一个日志函数来统一打印格式。这里定义了不同级别的宏,方便后续扩展。
#pragma once
#include <iostream>
#include <string>
#include <ctime>
#define NORMAL 1
#define WARNING 2
#define DEBUG 3
#define FATAL 4
// 宏展开后调用 log1 函数,传入级别、消息、文件和行号
#define LOG1(LEVEL, MESSAGE) log1(#LEVEL, MESSAGE, __FILE__, __LINE__)
void log1(std::string level, std::string message, std::string file, int line) {
std::cout << "[" << level << "]"
<< "[" << time(nullptr) << "]"
<< "[" << message << "]"
<< "[" << file << " : " << line << "]"
<< std::endl;
}
2. Server 端实现
Server 程序主要负责接收用户查询并返回结果。数据源通常存放在 ,前端静态资源位于 。



