简单日志库
程序员文章站
2022-03-03 20:11:55
...
源由
这个就不再说了
过程
一个类,或者工程总需要那么几个错误输出之类的东西,便于调试和排查问题。
从qqbot上对日志类有了一定的想法了。
需求分析
1,最重要的是,输出日志。
重要性分级?
模块信息
msg参数化
如不仅仅是"hello"
还可以"helle %d %s %f",xxx
2,
技术要点
1,不定参数与格式化输出
va_start (va, msg);
vfprintf(logto , msg, va);
va_end(va);
内容要点
1,每条记录有哪些必要信息呢
时间
函数
行数
进程?
msg
结构要点
麻雀虽小,五脏俱全。
结构上应该是什么样子呢
1,调试信息
枚举或者宏,应该没什么压力
2,输入
输入编码是个问题,倾向于使用utf-16
3,输出
倾向于文件,像标准输出啊,std::err之类的也应该支持。
4,存在形式。
//方案1类
class log
{
private:
FILE *LogTo;
public:
WriteToLog();
}
//方案2全局函数
LogPrint(LogTo,msg,line,time,...);
//方案3全局函数+全局配置类
class cfg
{
logInfo xxx
logto xxxx;
...
}
//基本函数LogPrint(...);
//有参宏定义
//...
理想中的样子
DbPrint(DEBUG, "X的值是%d", x);
通过修改cfg,可以改变输出啊,什么的。