代码之家  ›  专栏  ›  技术社区  ›  AmbroseChapel

如何让HTTP::Proxy记录筛选信息?

  •  2
  • AmbroseChapel  · 技术社区  · 15 年前

    我在使用过滤器时遇到了一些问题 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 回复  |  直到 7 年前
        1
  •  1
  •   hobbs    15 年前

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

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

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

    推荐文章