我有以下 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模式下显示这些信息?
最佳答案
您可以使用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;
关于perl - Mojolicious 源 IP 和用户代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67590739/