perl - Mojolicious 源 IP 和用户代理

标签 perl mojolicious

我有以下 Mojolicious 应用程序,它提供特定文件夹中的文件

use Mojolicious::Lite;
use Mojo::Log;

my $app = app;
my $static = $app->static;
push @{$static->paths} => 'c:\test';

$app->start

当我运行时:

perl mojo_server.pl daemon -m development

我明白了:

[2021-05-18 19:46:39.22370] [29388] [info] Listening at "http://*:3000"
Server available at http://127.0.0.1:3000

当我从 Web 浏览器访问文件时,我可以访问该文件,但在“Server available at http://127.0.0.1:3000"”之后,STDERR 上没有任何信息。 比如源地址和请求的页面以及用户代理是什么。如果可能的话,我怎样才能让 mojolicious 在 Debug模式下显示这些信息?

最佳答案

您可以使用MojoliciousHOOKS中的after_static :

use Mojolicious::Lite -signatures;
use Mojo::Log;

my $log = Mojo::Log->new;

hook after_static => sub ($c){
    $log->debug('original_remote_address : ' => $c->tx->original_remote_address);
    $log->debug('user_agent : ' => $c->tx->req->content->headers->user_agent );
    $log->debug('url : ' => $c->tx->req->url->to_abs);
};
app->start;

生成静态响应后会触发 after_static 事件。

更新:如果您需要一个更通用的解决方案,而不是专门针对提供静态文件,请查看 AccessLog插件。

use Mojolicious::Lite -signatures;
use Mojo::Log;
use Mojolicious::Plugin::AccessLog;

my $log = Mojo::Log->new;
plugin 'AccessLog';
app->start;

关于perl - Mojolicious 源 IP 和用户代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67590739/

相关文章:

perl - 如何调试用于从客户端上传文件的服务器端脚本(在此示例中为 curl)?

html - 使用 CSS3 嗅探文档类型,特别是使用 Mojo::DOM

regex - 如何使用 perl 正则表达式检测阿拉伯字符?

Perl 字符串拆分和连接

regex - 为什么我不能将正则表达式存储在变量中?

perl - 在 mojolicious 中测试 JSON PUT 请求

perl - 如何在 Mojolicious 应用程序的单元测试中伪造客户端 IP 地址?

mysql - 如何在perl中转义表行中的特殊字符

perl - 如何获得 __LINE__ 调用函数?

apache - Mojolicious 用于学校项目 : shall I install Nginx, Apache 还是 Lighttpd?