我使用 Catalyst(Perl 的 MVC 框架),但这个问题可能适用于所有 MVC 框架。
到目前为止,我使用 Apache 日志文件来获取有关访问者的统计信息:用户代理、访问的 URL、时间等。但现在我转向了 MVC 框架,我认为这还不够。例如,如果对/1/foo 和/1/bar 的请求对我来说是相同的,我只想在我的日志中显示/1/。
所以我想知道生成自己的统计日志文件的最佳方法是什么。我应该将其视为应用程序中的另一个日志文件吗?
这些统计数据可以随时记录。理想情况下,它们会在页面发送给用户之后被记录,因此不会感觉到记录所需的额外时间。
最佳答案
鉴于 Catalyst 已经广泛使用子例程属性,一种有用的方法可能是使用属性将相关子例程包装在自定义日志记录机制中。我写了an article关于此技术,以日志记录为例。基本思想是:
use Attribute::Handlers;
sub Log : ATTR(CODE) {
my ($pkg, $sym, $code) = @_;
my $name = *{ $sym }{NAME};
no warnings 'redefine';
*{ $sym } = sub {
log_message("Entering sub $pkg\:\:$name");
$code->( @_ );
};
}
sub foo : Log {
# this will be logged
}
关于performance - 保存日志/统计数据的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/832983/