如何让HTTP :: Proxy记录过滤器信息?

时间:2009-12-10 05:13:58

标签: perl http proxy documentation

我在使用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 );

根本没有任何东西被添加到日志文件中。

1 个答案:

答案 0 :(得分:1)

  

请注意,默认情况下不会导出日志记录常量,而是使用:log标记。它们也可以逐个导出。

它们是符号常量,因此您想要$proxy->logmask( FILTERS ),但首先需要use HTTP::Proxy qw(:log)use HTTP::Proxy qw(FILTERS)

或者,如果您不喜欢名称空间污染,您应该能够$proxy->logmask( HTTP::Proxy::FILTERS() )