我在使用HTTP::Proxy过滤器时遇到了一些问题,而我似乎无法弄清楚应该添加到logmask()
函数中以获取该信息。
我有一个日志文件,该部分很好,正在进行日志记录,但没有关于过滤器的信息,尽管它们已经实现并且(有时)正常工作。
我试过
logmask(['FILTERS'])
logmask('FILTERS')
logmask(FILTERS)
并且没有一个工作!我错过了什么?
此外,面具的两个权力是什么呢?并且: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 );
根本没有任何东西被添加到日志文件中。
答案 0 :(得分:1)
请注意,默认情况下不会导出日志记录常量,而是使用:log标记。它们也可以逐个导出。
它们是符号常量,因此您想要$proxy->logmask( FILTERS )
,但首先需要use HTTP::Proxy qw(:log)
或use HTTP::Proxy qw(FILTERS)
。
或者,如果您不喜欢名称空间污染,您应该能够$proxy->logmask( HTTP::Proxy::FILTERS() )