首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在哪里找到使用Nginx,Starman,Plack和Catalyst的应用程序运行时错误?

我可以在哪里找到使用Nginx,Starman,Plack和Catalyst的应用程序运行时错误?
EN

Stack Overflow用户
提问于 2010-09-16 00:59:21
回答 3查看 1.7K关注 0票数 3

我已经成功地使用Plack + Starman在我的开发机器上为我的Catalyst应用程序提供了服务,使用的是我在Dave Rolsky的Silki发行版中找到的守护程序脚本。

然后,我将nginx设置为反向代理到我的Starman服务器,并为nginx服务的静态目录设置了别名。到现在为止还好。但是,我不知道我的应用程序STDERR应该记录到哪里。它没有到达nginx (我想这是有道理的),但我找不到太多关于Starman可能将其记录在哪里的文档-如果有的话。我确实看过Plack的中间件模块,但只看到了访问日志的选项。

有人能帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-16 03:43:11

它无处可去。Catalyst::Log正在向STDERR发送数据,而初始化脚本正在向/dev/null发送STDERR

您有几个基本选择:

  1. Catalyst::Log替换为类似于Catalyst::Log::Log4perl的内容,或者只是使用覆盖了的Catalyst::Log的子类--这两种方法都允许您将日志记录输出发送到STDERR.
  2. Write以外的其他地方,还可以使用一些在PSGI级别运行的代码来管理日志文件并重新打开日志文件。我试过了,不是很舒服。日志文件比看起来更难。
  3. 使用FastCGI,你会得到一个错误流,它会把日志输出发送回and服务器。您仍然可以通过Plack::Handler::FCGI / Plack::Handler::FCGI::Engine使用Plack (我推荐后者,因为FCGI::Engine代码比FCGI.pm更新得多,也更好)。
票数 5
EN

Stack Overflow用户

发布于 2014-10-15 00:50:09

我意识到这个问题已经提出很长时间了,但我刚刚遇到了同样的问题……

你实际上比Hobbs提到的多了一个选择。

发送STDERR到/dev/null的不是"init脚本“,而是Starman。

如果你查看Starman的源代码,你会发现,如果你给它设置了--background标志,它就会使用MooseX::Daemonize::Core

一旦您知道了这一点,它的文档将告诉您它故意关闭STDERR、STDOUT和STDIN,并将它们重定向到/dev/null,并且它使用环境变量MX_DAEMON_STDERR和MX_DAEMON_STDOUT作为要使用的文件的名称。

因此,如果您在启动catalyst服务器时将MX_DAEMON_STDERR设置为一个文件名,那么STDERR将转到该文件。

票数 3
EN

Stack Overflow用户

发布于 2018-04-14 05:02:16

今天,Starman有一个--error-log命令行选项,允许您将错误消息重定向到文件。

请参阅documentation of starman

日志--错误日志

指定应写入错误日志的文件的路径名。这使您在使用--daemonize时仍然可以访问错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3719935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档