PSGI日志记录(Perl)



尽管文档非常少且不清楚,而且对于初学者来说还有一个有效的How To,但我已经开始喜欢PSGI了,目前正在我的一个应用程序中使用它。我想知道的是如何管理跨多节点应用程序的日志记录?关于登录PSGI,什么被认为是"最佳实践"?

我建议使用Plack::Middleware::AccessLog进行日志访问,使用Plack::Middleware::LogDispatch进行自定义日志记录。它们都使用流行的Log::Dispatch模块。

LogDispatch中间件文档目前没有向您展示如何使用日志记录对象一旦设置好。这里有一个例子:

my $app = sub {
    my $env = shift;
    $env->{'psgix.logger'}->({ level => "debug", message => "This is debug" });
    return [ 200, [], [] ];
};

为了解决多节点问题,您可以使用Log::Dispatch::Syslog,它会将日志发送到rsyslog,然后rsyslog可以将日志数据传递到另一个rsyslog服务器。通过这种方式,所有节点都可以登录到单个中央日志服务器。

通过日志::Dispatch的灵活性,您还可以选择日志如果您愿意,可以在本地和远程进行冗余。发送到的日志可以将中央服务器视为主要服务器,并完成日志记录如果中央日志服务器下降一点。

使用中央日志服务器有几个优点:

  1. 您可以在一个地方"grep"整个集群中的日志
  2. 使用一组日志文件,日志旋转和分析更简单
  3. 您可以更好地准备向上和向下扩展集群,因为您可以关闭节点,而不必担心丢失日志记录,或者保持服务器运行,这样就可以启动一个通宵的cron作业来处理日志

我目前使用Log::Dispach和Rsyslog来管理自己的多节点集群。

相关内容

  • 没有找到相关文章