Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Extracting time from a log

by toolic (Bishop)
on Jun 28, 2013 at 17:02 UTC ( #1041288=note: print w/ replies, xml ) Need Help??


in reply to Extracting time from a log

The problem is that 0.000352383 (which is stored in $1) is not greater than 10.0. You should also escape all the periods because they have special meaning in regexes (perlre).


Comment on Re: Extracting time from a log
Re^2: Extracting time from a log
by Azur (Initiate) on Jun 28, 2013 at 18:14 UTC
    1) Yes, that output was just an example of the log format. There are several pages which take 2-3 seconds, but even changing 10.0 to 1 or 0 result in no output. 2)Thank you, I thought as much. However, the command doesn't work any better with the periods escaped:  varnishlog -o -i Backend,RxURL,ReqEnd,RxHeader | perl -ne 'BEGIN { $/= "";} print if (/ReqEnd(?:[\sc]+)\d+\s\d+\.\d+\s+\d+\.\d+\s+\d+\.\d+\s+(\d+\.\d+)/ and $1 > 1.0)'
      but even changing 10.0 to 1 or 0 result in no output

      I beg to differ:

      $ echo " 11 SessionOpen c 123.234.56.78 63618 123.234.56.89:80 11 RxURL c /example.php 11 RxHeader c Host: 123.234.56.89 11 RxHeader c User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; r +v:22.0) Gecko/20100101 Firefox/22.0 11 RxHeader c Accept-Language: en-US,en;q=0.5 11 RxHeader c Accept-Encoding: gzip, deflate 11 ReqEnd c 1832330560 1372436083.710740089 1372436083.711302 +519 0.000174284 0.000352383 0.000210047" | perl -ne 'BEGIN { $/="";} +print if (/ReqEnd(?:[\sc]+)\d+\s\d+\.\d+\s+\d+\.\d+\s+\d+\.\d+\s+(\d+ +\.\d+)/ and $1 > 0)'

      Output:

      11 SessionOpen c 123.234.56.78 63618 123.234.56.89:80 11 RxURL c /example.php 11 RxHeader c Host: 123.234.56.89 11 RxHeader c User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; r +v:22.0) Gecko/20100101 Firefox/22.0 11 RxHeader c Accept-Language: en-US,en;q=0.5 11 RxHeader c Accept-Encoding: gzip, deflate 11 ReqEnd c 1832330560 1372436083.710740089 1372436083.711302 +519 0.000174284 0.000352383 0.000210047

      I changed the 10.0 to 0 and it outputted successfully. Perhaps you are overlooking something?

        Yes, clearly I must be, if you get output from that line, because I do not.

        I do get output if I enter...

        varnishlog -o -i Backend,RxURL,ReqEnd,RxHeader

        ...and when I enter...

        ls | perl -ne 'BEGIN { $/= "";} print'

        ...but not when I enter...

         varnishlog -o -i Backend,RxURL,ReqEnd,RxHeader | perl -ne 'BEGIN { $/= "";} print'

        So both parts of the command work individually, but not together!

        Any suggestions as to what I'm missing would be most welcome.

        EDIT: Solved it by redirecting the output to a textfile, then grepping the textfile. Still interested in finding out why the Perl command didn't work.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1041288]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (7)
As of 2015-07-04 20:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls