数据记录到文件中;如何轮换日志以及如何解析数据以使数据中不存在“间隙”?
题
我有一个 Web 应用程序,出于性能原因,它会将发送的所有数据放入日志文件中。
我对这种方法有两个担忧:
- 如何最好地轮换日志,以免丢失数据?
- 对于每个用户会话,都会记录多个请求。每个请求都有一个唯一的 ID,因此我可以通过一种简单的方法将请求与会话关联起来。然而,问题是,如果我轮换日志,我可能会面临在一个日志中出现一个请求而在另一个日志中出现另一个请求的风险。
如何以允许我解析给定会话中的所有请求的方式安排解析?我愿意定义一个会话时间限制,例如请求的间隔时间最多必须为 30 分钟。
如果我在 00 分钟进行每小时日志轮转:
如果用户在 13:59 发出一个请求,在 14:01 发出一个请求,该怎么办 - 用户最终会在两个不同的日志中收到请求。
解决方案
对第 1 部分的回答:如果您使用的是 *nix,请使用 syslog/logger。检查 logger(1) 和 syslog.conf(5) 手册页。
对第 2 部分的回答:您不必一次只查看一个日志文件。 less ${SERVICE}*
通常会一起打开所有相关的日志文件:当您到达页面底部时,:n 会将您移至下一个文件,然后 :p 返回。
或者,使用日志分析程序。 史蒂夫·坎普的帖子 关于在系统日志大海捞针中迅速找到针头及其评论涵盖了很多基础。
不隶属于 StackOverflow