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-07-18 10:03 Fox 阅读(2050) 评论(8)  编辑 收藏 引用 所属分类: T技术碎语

一个好的日志系统,除了可以记录尽可能多的必要信息,方便trace bugs、提供data analysis source这些基本功能之外,其他的貌似不必太在意。但真正当bugs冒出来的时候,要命的是既没有dump,也没有有价值的日志,更要命的是日志居然已经记录了那么多,居然让你查了半天,居然都是没有价值的!

悲剧啊!

日志需要记录的信息大概分为两类:

1) 系统运行情况:启动、加载、读写、关闭、异常

2) 用户使用情况:进入、操作、离开、异常

我可以想到的关于日志系统的要求大致以下几点:

1) 日志系统使用目录树结构:系统日志和用户日志分别记录,正常日志和异常日志分别记录,不置于同一文件夹下,日志文件命名做到令观者一目了然;

2) 记录详尽但不冗余:正确记录日志时间、位置、事件、因果,有可能的话,记录上下文(这要求有点高了);

3) 格式统一但严禁千篇一律:格式统一是指记录内容遵循一定格式,方便查看,严禁千篇一律是指记录要有层次、轻重,不同事件导致的“同一”异常日志不应不加区别,同样是为了方便查看;

4) 与异常处理相辅相成:有dump时,以日志辅助快速定位,没有dump时,日志应尽可能提供有效信息,离系统崩溃的地方越近越好(这一点似乎也有难度)。

________________________________________________

突然想到的,也还没有动手去做,先记下了,欢迎补充。

_____Added on Jul.25th, 2008_______________________

还看到一位兄弟在为我说话,谢谢!

今天在考虑实现时,想到一个很现实的问题,日志几乎是无处不在的,随时随地会有日志记录。不知道有谁对I/O(当然主要是Output)消耗和对系统的影响做过专门测试,猜测就算了:-),我很想知道有没有必要放到专门的线程中,如果放到独立线程中的话,问题就出来了,多长时间写一次?毕竟,记录日志的主要目的就是为了全面记录系统运行和用户使用情况,如果在服务器crash的时候,还有日志(尤其是crash上下文日志)没有被顺利写入,日志的意义也就大打折扣。

谁给点建议?

Feedback

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

2008-07-18 10:48 by Kevin Lynx
越来越写得水了。

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

2008-07-18 12:36 by Fox
我日......你

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

2008-07-18 14:59 by LOGOS
确实很水
连回复都那么水。。。。
日志啊,除了data analysis source能正常使用之外
关键时刻指望它能查bug?门都没有

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

2008-07-18 15:14 by kevin
LZ要写作文吗?一看就是文转理的

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

2008-07-18 15:20 by Fox
@LOGOS
事实上,在没有dump的时候,我都是从日志找bug的。

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

2008-07-25 10:38 by 李明坤
各位大哥,你们如果觉得这篇文章有点水,自己写一个好的出来看看啊?我很期待呢?

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

2008-12-22 12:18 by 肥仔
日志作用大了去了,查bug,特别是业务逻辑的bug,查安全,黑客,做roll back, 作业务分析,用处实在太多了
一个大系统,若没有规范的日志体系,那就是个豆腐渣工程。

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

2009-03-27 12:53 by 暗暗
写的倒是蛮好,有本事举一个例子给我看看

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理