欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

database logging or file logging 日志 

程序员文章站 2024-03-18 08:54:52
...

大家看题目应该清楚下面想讨论的问题了吧。平常的日志信息,到底是记录到数据库中,还是记录到文件中?在发表这篇文章之前,我也google 了一下,下面几个链接供大家讨论时的参考。

 

  1. http://*.com/questions/1160720/log-to-database-instead-of-log-files
  2. http://hungred.com/useful-information/best-way-log-details-database-or-file-log/
其实问题主要有以下几个:
  1. 实现的难易程度(从java平台来讲);
  2. 性能(千古不变的话题);
  3. 可扩展性;
  4. 是否可分析(无法分析的日志系统没有任何意义);
下面我简单说一下我的观点,剩下的请大家*发挥:
首先,文件日志实现最简单。文件日志不需要额外的工作,不需要其他的外部资源(比如数据库连接)。利用现有的log4j等框架就可以。但是数据库日志就没有什么现成的解决方案,需要从头设计。肯定要考虑的因素包括日志数据表的可扩展性,因为日志的信息量是巨大的,不采用分库、分表等数据库优化技术,将使得日志的记录和查询都相当缓慢。这反过来又增加了数据库日志的实现难度。尤其是对于没有采用分库、分表的项目来说,为了日志模块,需要增加相应的接口;
其次,文件日志性能比较高(在合理配置log4j的情况下,比如每小时滚动一次日志文件)。和数据库日志相比,至少没有网络传输的时间。但是要控制日志文件的大小,日志文件太大以后,性能反而不如数据库日志(有兴趣的朋友可以试一下);
最后,就是是否可分析了。很多同学说日志文件不好分析,一行一行看很麻烦,而且文件很大,打开文件都很困难。其实可能是不太了解一些文件分析工具或者命令。比如在linux下采用grep等。但是由于文件日志会导致大量的小文件,比如按小时分,一天就有24个日志文件。因此文件的合并分析可能是个问题;数据库日志在大家的看法里,应该是比较好分析的,因为大家都熟悉SQL。但是相应的,如果采用了分库分表的技术,SQL分析同样是困难的。而且数据库结构远没有文件结构方便变化,因为你要增减字段。而文件只是结构不同而已,不用修改任何结构定义。

好了,我说了这么多了,就等大家来讨论了。。。

 

相关标签: 日志