Creative Commons License
本Blog采用 知识共享署名-非商业性使用-禁止演绎 3.0 Unported许可协议 进行许可。 —— Fox <游戏人生>

游戏人生

游戏人生 != ( 人生 == 游戏 )
站点迁移至:http://www.yulefox.com。请订阅本博的朋友将RSS修改为http://feeds.feedburner.com/yulefox
posts - 62, comments - 508, trackbacks - 0, articles - 7

日志该这么记录

Posted on 2008-10-10 04:18 Fox 阅读(1786) 评论(8)  编辑 收藏 引用

作者:Fox

本文同时发布在http://www.yulefox.comhttp://www.cppblog.com/fox

两个多月之前,在CPPBLOG上写过一篇关于游戏开发中的问题,主要该考虑的问题都已经说明,当时没有实现这一块。在最近一个模块中,写了一个非常简单的写日志的接口,接口的声明大概是:

void PutoutLog(const char *szFile, const char *szLog, ...);

记录的日志格式如下:

1  2008-10-10-03:30:10.618 | projectpath/srcfile.cpp/function(30) : 哦嚯, 这儿出错了(eno : 0x00100000).

用到了__FILE__、__LINE__、__FUNCTION__几个宏。

基本满足需要了,需要改进的地方我现在能想到的主要是:

  • 文件名是全路径,没有必要,只记录文件名称其实就够了;
  • 没有考虑写日志时的线程同步问题;
  • 系统dump时的日志还是没有办法记录;
  • 缺少足够的、动态的上下文信息:调用堆栈、函数参数、系统运行参数;
  • 日志记录到普通文本中,虽然记录了时间、位置,还是不便于系统查看、查找、分析、挖掘。

说白了,这所谓的基本满足需要只是皮毛,因为最近在打理,有感于网页数据库技术的博大精深、美妙直观,如果可以把日志用网页数据库作为读写的载体,岂不甚妙?

隐约中感觉这种想法似曾相识,不识字只好乱翻书,果然在中发现有这样一篇文章:一个基于HTML的日志和调试系统。有兴趣的同学自己翻书吧:)。

如果将更加丰富的信息写入xml或php文件中,加入到数据库,可以对数据进行分析、挖掘,并友好的显示在浏览器中,这对于枯燥的debug过程,起码增添了些许益处。

然而,这又只是一个想法,或许在我手头上的工作稍后告一段落的时候,我可以花精力研究一下这方面的东西。

Feedback

# re: 日志该这么记录  回复  更多评论   

2008-10-10 09:21 by 四佰cc
你可以看看bekely db 记录log应该不错

# re: 日志该这么记录  回复  更多评论   

2008-10-10 09:28 by www.helpsoff.com.cn
最好还是保留全路径吧,系统庞大的时候总会有同名文件的。

# re: 日志该这么记录  回复  更多评论   

2008-10-10 14:25 by 阿福
const void PutoutLog(const char *szFile, const char *szLog, ...) const;

请问在一个C函数的两头加上const是什么意思?
你的意图是什么?

# re: 日志该这么记录  回复  更多评论   

2008-10-10 14:55 by Fox
@阿福
这个是成员函数,所以后面加了;这儿没有上下文,去掉更好理解了。
前面加是笔误:)。

# re: 日志该这么记录[未登录]  回复  更多评论   

2008-10-10 16:35 by
看看这个怎样?

http://www.cppblog.com/wish/archive/2008/08/30/60310.html

# re: 日志该这么记录  回复  更多评论   

2008-10-10 20:36 by 空明流转
我还是等某个log库成功进入boost再说吧。。。

# re: 日志该这么记录  回复  更多评论   

2008-10-10 20:43 by dikatour
我觉得简单一点比较好。
展现形式并不一定要花哨,反而如何选择合适的日志记录点和时机比较重要。少则不全,多则冗余。

# re: 日志该这么记录  回复  更多评论   

2008-10-16 17:58 by 浪迹天涯
log,我觉得关键的有这几点:
1.记录信息规范,便于自己调试同时也便于现场人员发现问题。
2.在多线程下的问题,确保log正确无误,不能丢失。以前多线程下程序调试不对,检查n久才怀疑到日志系统的问题,莫名其妙的丢了许多log记录。

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理