日志实现
在开发过程中,完善的日志系统是排查问题的关键。我们利用 C/C++ 编译器提供的预定义宏来增强日志的可读性。
核心宏说明
__FILE__ 和 __LINE__ 是编译器自动替换的特殊宏。前者代表当前源文件的文件名(含路径),后者代表代码所在的行号。结合这两个宏,日志输出能精确指向出错位置,例如 [test.cpp : 25]。
下面是一个基础的日志宏实现示例。这里定义了不同级别的日志常量,并通过宏将参数传递给处理函数。
#pragma once
#include <iostream>
#include <string>
#include <ctime>
#define NORMAL 1
#define WARNING 2
#define DEBUG 3
#define FATAL 4
#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;
}
Server 端逻辑
数据源位于 data/raw_html/raw.txt,前端静态资源放在 ./wwwroot/。Server 的核心职责是接收用户查询关键字,返回 JSON 格式的搜索结果。
主程序中实例化 Searcher 类并初始化。这里特别要注意输入处理:使用 cin 会忽略空格,而搜索引擎通常需要整句匹配,因此改用 fgets 读取整行。读取后需要手动去除末尾的换行符,再将处理后的字符串传入搜索接口。



