http://qs321.pair.com?node_id=75948

pappajaz has asked for the wisdom of the Perl Monks concerning the following question:

I am in need of some assistance. I am trying to tail -f a log and view it in web browser.

Other ideas were to parse the incoming text and highlight it on output. I have made a file that does a tail -f in perl (to console) with no problem but I have been have difficulty outputting this in html.

Any help is greatly appreciated.

Replies are listed 'Best First'.
Re: viewing log via HTML
by tinman (Curate) on Apr 27, 2001 at 02:59 UTC

    I'm not sure about exactly how you want to format your logfile entries in HTML...

    That being said, I think you should be looking at File::Tail as a useful way of tailing an access log..

    or, the following: its ugly,(and I don't recommend it) but it will work

    while (1) { while (<INPUT>) { .... } sleep $delay_period; seek(INPUT, 0, 1); }
    What this code does is read the file, sleep for $delay_period, and then go to the end of the file from the current point..

    To format into HTML, well, assuming you just want to make it appear readable, so what you can do is add a <br> to the end of each line.. so, use CGI.pm to complete the picture, using the following snippet..

    #!/usr/bin/perl -w use CGI; use strict; my $query = new CGI; print $query->header(), $query->start_html(-title=>"My log file"), $query->h1('Tail'); # put your tailing method here while (1) { while (my $input = <INPUT>) {join('',$input,'<br/>'); print $input +;} sleep $delay_period; seek(INPUT, 0, 1); } print $query->end_html();

    HTH
      Don't forget to encode your data. Angle brackets in the log file will make life miserable otherwise.
      #!/usr/bin/perl -w use CGI; use strict; use HTML::Entities; my $query = new CGI; print $query->header(), $query->start_html(-title=>"My log file"), $query->h1('Tail'); # put your tailing method here while (1) { while (my $input = <INPUT>) { $input .= '<br/>'; print encode_entities( $input ); } sleep $delay_period; seek(INPUT, 0, 1); } print $query->end_html();

      Cheers,
      Ovid

      Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.

        I tried this and it doesn't seem to load. I don't get any errors, it just keeps "waiting for a response". I took any html calls out and it worked fine to a term. Any ideas are appreciated.
Re: viewing log via HTML
by coolmichael (Deacon) on Apr 27, 2001 at 11:57 UTC
    I'm not quite sure I understand your question, but if you mean to serve the logs on the web, you could decide to leave the logs in plain text, and not bother with HTML at all. print "Content-Type: text/plain\n\n"; and then you can read from the log file and print it to stdout.

    TMTOWTDI

    michael
    the blue haired monk

      The format is not as much of an issue as getting the data in HTML. I really appreciate everyone's help on this. Thank you.