日记24.12.10
- 一.webserver:
一.webserver:
今天是失败的一天(其实还好),主要是本来准备把Log日志系统写完的,结果因为在床上躺了太久导致没有写完(短视频害人)。
但是今天找到了一篇好的博客,按照他的思路估计一两周就能写完,并且看了他的思路之后虽然代码没写多少,但是整体框架很清晰,大概知道这个webserver的实现思路了,估计我做完这个项目后,也会写个博客,造福后来人,虽然说这个项目整体不难,但是对于没有项目经验的uu来说自己实现还是有难度的,所以有相关博客进行讲解会方便一点。
好的,来说webserver,虽然代码没写多少,但实际Logger的框架已经搞得差不多了,话不多说直接上图:
解释一下,首先这幅图省略了FixedBuffer,这个可以简单看成一个大小不变的缓冲区,底层就是一个字符数组,图中几个类大多数都用到了他,就是把它当缓冲区,没什么特别。
FileUtil:将FILE*封装,使得文件操作变得简单
LogFile:实现将文件写入磁盘和文件滚动,但是同步写操作
AsyncLogger:实现异步写,具体写入磁盘的操作还是调用LogFile
LogStream:重载了<<,使得LOG_XXX<<data;成为可能
Logger:包含了LogStream,用LogStream接受输入,再将LogStream内容写到文件,其实还有个类SourceFile没写出来,因为只是封装了一下filename。然后用Logger::setOutput,选择调用LogFile还是AsyncLogger(函数指针),默认同步写到stdout
明天会把代码写出来
`