Mojolicious 源 IP 和用户代理

Mojolicious source IP and user agent

我有以下 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 浏览器访问文件时,我能够访问该文件,但是在“http://127.0.0.1:3000" 服务器可用”之后没有关于 STDERR 的信息 比如什么是源地址和请求的页面以及用户代理。如果可能的话,我怎样才能让 mojolicious 在调试模式下显示这些信息?

您可以在 Mojolicious:

中使用 HOOKS 中的 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;