2009-12-10 10 views
2

HTTP::Proxy 필터를 사용하는 데 문제가 있습니다. 해당 정보를 얻기 위해 logmask() 함수에 무엇을 추가해야하는지 알 수 없습니다.필터 정보를 기록하는 HTTP :: Proxy를 얻으려면 어떻게해야합니까?

로그 파일이 있는데 로그 파일이 있습니다. 로깅이 일어나고 있지만 필터에 대한 정보는 제공되지 않지만 구현되고 (때로는) 작동합니다.

나는

  • 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

    로깅 상수는 기본적으로 내보내지지 않지만 log 태그로 내보내집니다. 또한 하나씩 내보낼 수 있습니다.

    그들은 상징적 인 상수를, 그래서 당신은 $proxy->logmask(FILTERS)을하고 싶지만 우선은 use HTTP::Proxy qw(:log) 또는 use HTTP::Proxy qw(FILTERS)해야합니다.

    네임 스페이스 오염이 마음에 들지 않으면 할 수 있어야합니다. $proxy->logmask(HTTP::Proxy::FILTERS())

    관련 문제