小日志与大日志:通过Java进行日志记录

时间:2016-06-29 11:12:58

标签: java logging

我的用例: 在一个小时内,我收到10000个客户请求。我们创建一个每小时的日志文件。每个客户日志为5K,即每小时日志为50M +一些系统记录数据。我们使用grepping进行日志分析,使用log4j进行日志编写。

问题: 最好是为每个客户创建一个日志文件,或者将所有客户日志与其他系统相关的日志一起转储到一个大的每小时文件中。

寻找:

答案,涵盖(优先顺序):

  1. 性能:创建日志时的开销(即运行时log4j性能)?

  2. 可扩展性:假设我在一小时内开始获得1M客户?

  3. 存储管理:多个小文件易于维护,或者在操作系统级别有一个大文件?

  4. 日志分析:是否更好地使用大型日志文件或在OS中查找文件更好?

  5. 我已经看到了这个链接,java logging : multiple small file vs one big,这个场景略有不同,它根据大小提出了分解问题,而我则谈论基于某些唯一标识符的破解。

1 个答案:

答案 0 :(得分:1)

  

性能:创建日志时的开销(即运行时log4j性能)?

如果您需要全部扫描,则更多文件写入速度较慢,读取速度较慢。

如果您只需阅读一个,那就快得多。

  

可扩展性:假设我在一小时内开始获得1M客户?

1百万个文件很多,但任何一种解决方案都可以使用。

  

存储管理:多个小文件易于维护,还是OS级别的一个大文件?

更多的文件难以管理,但是现在有100万这么多,除非你有一个旋转的磁盘,在这种情况下,它可能表现得非常糟糕。

  

日志分析:是否更好地获取大型日志文件或在OS中查找文件更好?

如果您只需要处理一个文件,那就更好了。

BTW您可以为每个数字组合一个文件,例如所有用户ID以0结尾,另一个以1结尾。这允许您对数据进行分区并控制文件数。