我已经成功地使用Plack + Starman在我的开发机器上为我的Catalyst应用程序提供了服务,使用的是我在Dave Rolsky的Silki发行版中找到的守护程序脚本。
然后,我将nginx设置为反向代理到我的Starman服务器,并为nginx服务的静态目录设置了别名。到现在为止还好。但是,我不知道我的应用程序STDERR应该记录到哪里。它没有到达nginx (我想这是有道理的),但我找不到太多关于Starman可能将其记录在哪里的文档-如果有的话。我确实看过Plack的中间件模块,但只看到了访问日志的选项。
有人能帮我吗?
发布于 2010-09-16 03:43:11
它无处可去。Catalyst::Log正在向STDERR发送数据,而初始化脚本正在向/dev/null发送STDERR。
您有几个基本选择:
Catalyst::Log替换为类似于Catalyst::Log::Log4perl的内容,或者只是使用覆盖了的Catalyst::Log的子类--这两种方法都允许您将日志记录输出发送到STDERR.发布于 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将转到该文件。
发布于 2018-04-14 05:02:16
今天,Starman有一个--error-log命令行选项,允许您将错误消息重定向到文件。
日志--错误日志
指定应写入错误日志的文件的路径名。这使您在使用--daemonize时仍然可以访问错误。
https://stackoverflow.com/questions/3719935
复制相似问题