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

标签 perl http proxy documentation

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

相关文章:

perl - SFTP文件同时上传和下载

regex -\d+ 正则表达式忽略开头的减号

javascript - 使用 JavaScript 的 HTML 前端 SVG 导出下载

jquery - POST url 中的参数

node.js - 无法使用代理对 googleapis 进行 JWT 身份验证

linux - 在 bash 的每一行中查找连续的空格分隔的单个字符

perl - 我如何告诉 CPAN.pm 从哪里获取模块?

asp.net - HTTP 错误 403.14 - 禁止在 Windows 7 上使用 visual studio 12 创建 Web 服务

proxy - 对特定的代理使用JMeter代理来记录请求

node.js - 使用nginx后socket.io响应慢