如何缓冲跨请求的日志记录 - Perl、log4Perl

How can I buffer logging across requests - Perl, log4Perl

我正在寻找一种方法来仅捕获在给定时间范围内达到特定阈值后发生的特定问题。

例如

  1. 我的 Web 应用程序使用一组发送过来的密钥 POST
  2. 我正在将密钥列入白名单,因此我只在 POST 中寻找特定密钥以供应用程序使用
  3. 但是,我想跟踪所有不常见且不在我的列表中的键
  4. 但是,我不想跟踪每次出现的未列出的密钥 - 以防这只是一个试图通过的机器人
  5. 但是,一旦特定的未列出的密钥达到阈值 - 比如说一周 100 次 - 我想记录它。

我如何使用 Perl 完成此操作,最好是使用 log4Perl 之类的东西?

谢谢!

我认为答案是 'use a hash'。

在您的应用中定义哈希。每次出现错误请求时,提取唯一键,增加该键的哈希值。一旦该值达到阈值,就会发出警告。 (然后重置它)。

如果您需要跨会话持久化,您可能会使用 Storable 之类的东西来加载和保存 'invalid requests' table。