在阅读了O'Reilly的一篇关于这个主题的文章之后,我想问Stack Overflow对这个问题的看法.
我有一个多用户应用程序,它为活动保留了一个集中的日志文件.现在,日志记录进入文本文件大约10MB-50MB /天.记录器每天轮换文本文件,我们保留过去4或5天的价值.比这更老的我们没兴趣.
它们很少被阅读:在开发应用程序以获取错误消息,诊断消息时,或者在应用程序处于生产状态时,对用户报告的问题或错误进行分类.
(这严格来说是应用程序日志.安全日志记录保存在别处.)
但是当他们被阅读时,他们就是痛苦的屁股.即使使用Perl,使用10MB文本文件也很有趣:文件中的字段(事务ID,用户ID等)很有用,但只是文本.消息是按顺序写入的,一次一个地写入,因此当尝试跟踪特定事务或用户时,交错活动全部混淆.
我正在寻找关于这个主题的想法.有人用SQL数据库完成了应用程序级日志记录并喜欢它吗?讨厌吗?
我有一个系统,它通过http(> 10k生产者,每天10个日志,每个约100行文本)从不同的地方接收日志文件.
我想存储它们以便能够计算misc.每晚统计它们,出口它们(按到达日期或第一行内容排序)......
我的问题是:存储它们的最佳方法是什么?
有什么建议?
在用grep等分析了几千兆字节的日志文件之后,我想知道如何通过使用数据库来记录这些内容,从而使这更容易.什么数据库适合这个purpuse?当然,vanillia SQL数据库可以工作,但提供了许多事务保证等,这些都是您不需要的,如果您使用数GB的数据和非常快的插入速率,这可能会使速度变慢.所以NoSQL数据库可能是正确的答案(比较一些建议的答案).数据库的一些要求是:
更新:已经存在一些SO问题:数据库建议用于处理/报告大量日志文件类型数据以及什么是用于审计/日志记录数据库的良好NoSQL和非关系数据库解决方案.但是,我很好奇哪些数据库满足哪些要求.
我和另一篇文章中描述的人有同样的问题.我的应用程序的日志文件很大(~1GB),而grep用于关联日志文件中的信息非常繁琐.现在我使用''less''工具,但它也比我想要的慢.
我在考虑加快搜索速度.有以下几种方法:首先,用XML生成日志并使用一些XML搜索工具.我不确定使用XML搜索会获得多少加速(我猜不多,因为非索引文件搜索仍需要很长时间).
其次,使用XML数据库.这会更好,但我在这里没有太多背景.
第三,使用(非XML)数据库.这有点单调乏味,因为必须编写表模式(上面的第二个选项也可以完成吗?).我还预见到一开始会改变很多模式以包含常见用例.理想情况下,我想要一个比完整的数据库更轻的东西来存储日志.
第四,使用lucene.它似乎符合目的,但有一种简单的方法来指定当前用例的索引吗?例如,我想说"每当你看到'迭代'这个词时索引".
你有什么意见?
我正在使用Pear登录PHP,我遇到了一个标准问题:当数据库不可用时,我可以使用基于文件的日志记录吗?我不介意它是否由于并发问题而变慢,但由于多次同时点击而无法工作.
我一般都在问这个问题(对于其他网络技术),特别是针对PHP的Pear.
谢谢!
logging ×6
database ×5
log-analysis ×1
log-files ×1
nosql ×1
sql ×1
text-files ×1
xml-database ×1