我在使用 HTTP::Proxy 时遇到了一些问题而且我似乎无法弄清楚我应该向 logmask()
函数添加什么来获取该信息。
我有一个日志文件,那部分没问题,正在记录日志,但没有关于过滤器的信息,尽管它们已经实现并且(有时)工作。
我试过了
logmask(['FILTERS'])
logmask('FILTERS')
logmask(过滤器)
但这些都不起作用!我错过了什么?
还有,面具的二的幂是怎么回事?以及由 :log
导出的常量?
如您所知,我很困惑。
编辑:
按照下面的建议,我有以下脚本:
#!/sw/bin/perl
use strict;
use warnings;
use HTTP::Proxy qw( :log );
use HTTP::Proxy::BodyFilter::tags;
use HTTP::Proxy::BodyFilter::simple;
open( LOG, '>>', "/Users/ambrose/proxy-log.txt" ) or die "$!";
my $proxy = HTTP::Proxy->new;
$proxy->port(3128);
$proxy->logfh(*LOG);
$proxy->logmask( ALL );
$proxy->push_filter(
mime => 'text/html',
response => HTTP::Proxy::BodyFilter::tags->new(),
response => HTTP::Proxy::BodyFilter::simple->new(
sub { ${ $_[1] } =~ s!(</?)i>!$1b>!ig }
)
);
$proxy->start;
它没有记录任何有关过滤器的信息,尽管过滤器正在运行,但我可以看到斜体已更改为粗体,如示例所示。
如果我改变行:
$proxy->logmask( ALL );
到
$proxy->logmask( FILTERS );
根本没有任何内容添加到日志文件中。
最佳答案
Note that the logging constants are not exported by default, but by the :log tag. They can also be exported one-by-one.
它们是符号常量,因此您想执行 $proxy->logmask(FILTERS)
,但首先您需要使用 HTTP::Proxy qw(:log)
或 使用 HTTP::Proxy qw(FILTERS)
。
或者,如果您不喜欢 namespace 污染,您应该能够执行 $proxy->logmask( HTTP::Proxy::FILTERS() )
关于perl - 如何让 HTTP::Proxy 记录过滤器信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1878756/