Catalyst Development Server - 不显示路由和错误

时间:2015-01-28 10:07:05

标签: perl catalyst

为了设置看起来,我是一位经验丰富的开发人员,多年来编写了多种语言,包括90年代后期的早期00年代的Perl。从那时起,我还没有触及Perl,但现在有一个客户希望对使用Perl5和Catalyst构建的现有开源项目进行一些更改。我已经快速完成了Catalyst教程,在线阅读了几本书,现在我开始感觉自己的方式。

我在一个干净的Debian Wheezy VM上启动并运行现有项目,并使用Catalyst Development Server测试我的更改代码。

在完成教程并编写一些测试应用程序时,开发服务器在运行时总会输出很多有用的信息,例如配置的路由等。但是在这个项目中,当我运行服务器时,我不会# 39;获得大量输出。我甚至不会将邮件发送到$c->log->debug();

我使用以下命令运行服务器:

perl ./script/asnn_panel_server.pl -d -r

其中输出以下内容:

HTTP::Server::PSGI: Accepting connections at http://0:3000/

我可以访问服务器,应用程序运行正常。

在测试控制器操作中,我可以尝试以下几行:

$c->log->debug("A test debug message");
print "A test print message\n";

调试日志消息未出现在我的开发服务器输出中,但打印行没有出现。所以我知道对$c->log->debug()的调用并没有爆发,因为下一行正在执行,但它在哪里?

基本上我觉得我可以'从Catalyst Development服务器获得更多有用的输出,但不是。

我有googles但无法找到任何相关内容。对不起,如果我在这里走的方向不对,我知道我一般都在做什么,但在很短的时间内有很多东西可以拿到!

我怀疑我的问题可能与我正在开发的开源项目有关,但是从这个方向来说并没有太大的帮助。任何人都可以给我任何关于调查内容的指示吗?

更新:我现在意识到应用程序正在使用log4perl,它被配置为将$c->log->debug()发送到syslog。我仍然不知道为什么Catalyst Development服务器没有提供足够的输出。

:WQ

2 个答案:

答案 0 :(得分:2)

对于后来遇到此问题的人,如果您想查看开发人员调试流(关于应用程序正在使用的路由和类和模型的内容等等,您需要处于调试模式,您可以通过设置CATALYST_DEBUG轻松完成在您的环境中= 1(我经常启动我的应用程序,如“CATALYST_DEBUG = 1 perl -Ilib script / myapp_server.pl”

作为日志级别的调试和调试模式之间存在着可悲的区别。催化剂工作的方式是,如果你处于调试模式(通过CATALYST_DEBUG = 1,或者其他任何记录的方式打开),所有这些调试流都会被发送到日志,大部分都在调试级别记录(再次调试作为日志级别不同于调试开发人员模式:()因此,您需要两种调试模式,并且您的记录器应设置为在调试级别进行侦听。

如果您使用默认的催化剂日志,默认情况下它是调试级别,因此您只需要执行CATALYST_DEBUG = 1。如果您使用其他记录器,请确保为开发设置启用调试日志级别,如果您希望查看这些开发人员流日志。

答案 1 :(得分:1)

发送到$c->log->debug()的邮件通常在生产环境中被禁用。如果您使用或不使用-d开关启动脚本似乎无关紧要,那么我建议序列中的下游将环境变量CATALYST_DEBUG设置为{单方面{1}}或0

也就是说,您应该可以看到undef$c->log->info()来电的输出。该问题的答案应该可以帮助您确定问题是$c->log->warn()还是与Catalyst相关。

希望这会让你顺利上路。