8

尽管文档相当少且不明确,并且对于初学者来说是一个有效的 How-To,但我已经成长为喜欢 PSGI 并且目前正在我的一个应用程序中使用它。我想知道的是如何管理跨多节点应用程序的日志记录?关于登录 PSGI,什么被认为是“最佳实践”?

4

1 回答 1

6

我建议使用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 服务器。这样,所有节点都可以登录到单个中央日志服务器。

借助 Log::Dispatch 的灵活性,您还可以选择在本地和远程记录以实现冗余(如果您愿意)。发送到中央服务器的日志可以被认为是主要的,并且在本地完成的日志记录可以被认为是备份,以防中央日志服务器关闭一段时间。

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

  1. 您可以在一个地方在整个集群中“grep”您的日志。
  2. 使用一组日志文件,日志轮换和分析更简单。
  3. 您可以更好地向上和向下扩展集群,因为您可以关闭节点而不必担心丢失日志记录,或者保持服务器开启以便可以触发通宵的 cron 作业来处理日志。

我目前以这种方式一起使用 Log::Dispach 和 Rsyslog 来自己管理多节点集群。

于 2012-05-31T03:03:08.677 回答