PHP - Reading Live Text Log ?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • jerryyang_la1@yahoo.com

    #1

    PHP - Reading Live Text Log ?

    Hi

    My mail server outputs live logs like this:

    T 20070325 123318 4605007c Connection from 111.111.111.111
    T 20070325 123319 4605007c HELO testdomain.com
    T 20070325 125817 46050083 EHLO S010600110962b8 2a.ed.roguedoma in.net
    T 20070325 125818 46050083 MAIL FROM: <gqvnwuhku@rogu edomain.net>
    E 20070325 125823 46050083 Host 68.150.140.71 blocked by
    10-12 .sorbs.net C - Block - message tagged.
    T 20070325 125824 46050083 RCPT TO: <dignity@newsit e.com>
    E 20070325 125824 46050083 RCPT from 68.150.140.71 - user
    <dignity@newsit e.comnot known.
    T 20070325 125824 46050083 Connection closed with 68.150.140.71, 7
    sec. elapsed.
    T 20070325 123349 4605007c Connection closed with 111.111.111.111 , 31
    sec. elapsed.
    T 20070325 125947 46050084 Connection from 83.28.27.71
    T 20070325 125947 46050084 HELO drmac.cl
    T 20070325 125947 46050084 MAIL FROM: <bitransmitting @drmac.cl>
    E 20070325 125948 46050084 Host 83.28.27.71 blocked by
    zen.spamhaus.or g sbl/xbl/pbl/zen 2 - message tagged.
    T 20070325 125948 46050084 RCPT TO: <a1aaa1azzzz1za aaaa@newsite.co m>
    E 20070325 125948 46050084 RCPT from 83.28.27.71 - user
    <a1aaa1azzzz1za aaaa@newsite.co mnot known.
    T 20070325 125949 46050084 Connection closed with 83.28.27.71, 2 sec.
    elapsed.

    I'm looking to try and read this file via PHP and colourise each line
    based on the connection ID displaying the final result in a php
    page...

    eg:

    T 20070325 123318 4605007c Connection from 111.111.111.111
    The ID is 4605007c This appears on 3 lines. Note that the ID's are
    not always grouped together.

    Can this be done ?? The file is live and constantly changing...

    Thanks

  • petersprc

    #2
    Re: PHP - Reading Live Text Log ?

    You could do this with tail and fread. Here's one example of reading a
    file that's continuously being updated:



    On Mar 25, 8:07 am, jerryyang_...@y ahoo.com wrote:
    Hi
    >
    My mail server outputs live logs like this:
    >
    T 20070325 123318 4605007c Connection from 111.111.111.111
    T 20070325 123319 4605007c HELO testdomain.com
    T 20070325 125817 46050083 EHLO S010600110962b8 2a.ed.roguedoma in.net
    T 20070325 125818 46050083 MAIL FROM: <gqvnwu...@rogu edomain.net>
    E 20070325 125823 46050083 Host 68.150.140.71 blocked by
    10-12 .sorbs.net C - Block - message tagged.
    T 20070325 125824 46050083 RCPT TO: <dign...@newsit e.com>
    E 20070325 125824 46050083 RCPT from 68.150.140.71 - user
    <dign...@newsit e.comnot known.
    T 20070325 125824 46050083 Connection closed with 68.150.140.71, 7
    sec. elapsed.
    T 20070325 123349 4605007c Connection closed with 111.111.111.111 , 31
    sec. elapsed.
    T 20070325 125947 46050084 Connection from 83.28.27.71
    T 20070325 125947 46050084 HELO drmac.cl
    T 20070325 125947 46050084 MAIL FROM: <bitransmitt... @drmac.cl>
    E 20070325 125948 46050084 Host 83.28.27.71 blocked by
    zen.spamhaus.or g sbl/xbl/pbl/zen 2 - message tagged.
    T 20070325 125948 46050084 RCPT TO: <a1aaa1azzzz1za a...@newsite.co m>
    E 20070325 125948 46050084 RCPT from 83.28.27.71 - user
    <a1aaa1azzzz1za a...@newsite.co mnot known.
    T 20070325 125949 46050084 Connection closed with 83.28.27.71, 2 sec.
    elapsed.
    >
    I'm looking to try and read this file via PHP and colourise each line
    based on the connection ID displaying the final result in a php
    page...
    >
    eg:
    >
    T 20070325 123318 4605007c Connection from 111.111.111.111
    The ID is 4605007c This appears on 3 lines. Note that the ID's are
    not always grouped together.
    >
    Can this be done ?? The file is live and constantly changing...
    >
    Thanks

    Comment

    • jerryyang_la1@yahoo.com

      #3
      Re: PHP - Reading Live Text Log ?

      Thanks

      But what about colourising the matching lines ?

      Comment

      • petersprc

        #4
        Re: PHP - Reading Live Text Log ?

        On Mar 25, 10:34 am, jerryyang_...@y ahoo.com wrote:
        Thanks
        >
        But what about colourising the matching lines ?
        Here's one (ugly) way to do it:

        <?

        error_reporting (E_ALL);

        function printLog($text)
        {
        $lines = explode("\n", $text);
        $buf = '';
        $head = null;
        $extra = array();

        for ($i = 0; $i < count($lines); $i++) {
        $parts = explode(' ', $lines[$i], 5);
        if (count($parts) >= 4 && ($parts[0] == 'T' || $parts[1] == 'E'))
        {
        if (!is_null($head )) {
        $buf .= printEntry($hea d, $extra);
        }
        $head = $parts;
        $extra = array();
        if ($i == count($lines) - 1) {
        $buf .= printEntry($hea d, $extra);
        }
        } else {
        $extra[] = $lines[$i];
        }
        }

        echo $buf;
        flush();
        }

        function printEntry($hea d, $extra)
        {
        static $rnd = null;
        if (is_null($rnd)) {
        $rnd = rand();
        }

        $hex = md5($head[3] . $rnd);
        $fg = substr($hex, 0, 6);
        $bg = sprintf("%02x%0 2x%02x",
        ((('0x' . substr($hex, 0, 2)) + 0x7f) % 0xff),
        ((('0x' . substr($hex, 2, 2)) + 0x7f) % 0xff),
        ((('0x' . substr($hex, 4, 2)) + 0x7f) % 0xff));

        $msg = join(' ', $head) . "\n" . join("\n", $extra);
        $str = "<span style=\"width: 100%; color: #{$fg}; background: #{$bg};
        \">" .
        htmlentities($m sg, ENT_QUOTES) . "</span>";
        $str = nl2br($str);

        return $str;
        }

        $text = "T 20070325 123318 4605007c Connection from 111.111.111.111
        T 20070325 123319 4605007c HELO testdomain.com
        T 20070325 125817 46050083 EHLO S010600110962b8 2a.ed.roguedoma in.net
        T 20070325 125818 46050083 MAIL FROM: <gqvnwu...@rogu edomain.net>
        E 20070325 125823 46050083 Host 68.150.140.71 blocked by
        10-12 .sorbs.net C - Block - message tagged.
        T 20070325 125824 46050083 RCPT TO: <dign...@newsit e.com>
        E 20070325 125824 46050083 RCPT from 68.150.140.71 - user
        <dign...@newsit e.comnot known.
        T 20070325 125824 46050083 Connection closed with 68.150.140.71, 7
        sec. elapsed.
        T 20070325 123349 4605007c Connection closed with 111.111.111.111 , 31
        sec. elapsed.
        T 20070325 125947 46050084 Connection from 83.28.27.71
        T 20070325 125947 46050084 HELO drmac.cl
        T 20070325 125947 46050084 MAIL FROM: <bitransmitt... @drmac.cl>
        E 20070325 125948 46050084 Host 83.28.27.71 blocked by
        zen.spamhaus.or g sbl/xbl/pbl/zen 2 - message tagged.
        T 20070325 125948 46050084 RCPT TO: <a1aaa1azzzz1za a...@newsite.co m>
        E 20070325 125948 46050084 RCPT from 83.28.27.71 - user
        <a1aaa1azzzz1za a...@newsite.co mnot known.
        T 20070325 125949 46050084 Connection closed with 83.28.27.71, 2 sec.
        elapsed.
        ";

        printLog($text) ;

        ?>

        Comment

        Working...