C++ WebServer / 11
日志与配置:让项目更像工程
v5.0 到 v5.5 逐步加入日志、异步日志、日志轮转、命令行配置和优雅退出。这个阶段让项目从 demo 更接近可维护工程。
这一阶段要解决什么问题
服务器运行时必须能观察状态,也要能通过参数调整端口、线程数、资源目录、日志等级等配置,而不是把所有值写死在代码里。
原来的实现有什么缺陷
没有日志时,连接关闭、解析失败、文件不存在、epoll 错误都只能靠临时打印。没有配置时,换端口或调整线程数都要重新改代码。
我是怎么改的
先加入基础日志系统,再补时间戳、文件名、行号和线程安全;之后加入异步日志与日志轮转。最后通过命令行配置和优雅退出补齐工程化入口。
核心代码 / 关键逻辑
./VWebServer --port 8080 \
--threads 8 \
--root Resources \
--log-level WARN日志用于记录新连接、连接关闭、请求路径、解析失败、文件访问失败、定时器回收和压测状态。
踩坑记录
日志如果直接同步写文件,会污染热路径。异步日志能降低请求处理路径上的阻塞,但也要处理队列、文件轮转和退出时 flush 的问题。