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;
我有以下 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;