Tailing logs

Paul Chvostek paul+fbsd at it.ca
Wed Aug 27 06:52:24 UTC 2008

On Fri, Aug 22, 2008 at 10:28:33AM -0400, DAve wrote:
> I would love to have a way to tail a log, like piping to grep, except I
> see every line and the lines I would normally grep for are highlighted.
> That would be cool. Anyone know of a bash command or tool that will do this?

I use tcsh as my shell.  The following alias works nicely for me in
xterm, but would have to be adjusted for anything else:

  alias highlight 'sed -E '\''s/\!:*/^[[1m&^[[0m/g'\'''

Replace "^[" with an escape character, twice.  Put it in your .tcshrc if
you like.  YMMV.

> Side note, I am tailing sendmail after changes to my outbound queue
> runners. I want to highlight my sm-mta-out lines but still see all lines.

Right, I do very similar stuff.  You'd use this like:

  tail -F /var/log/maillog | highlight .*sm-mta-out.*

Quotes seem to confound this alias.  I haven't bothered to fix that; as
long as what you're searching for doesn't glob a file, you should be
fine without quotes.

You can also do more complex things in either sed or awk, colour-coding
individual pattern matches.  Here's one in awk that I use to highlight
the activity of milter-greylist:

  #!/usr/bin/awk -f
    red="^[[31m";     green="^[[32m";
    yellow="^[[33m";  blue="^[[34m";
  /autowhitelisted/ { printf(fmt, green, $0, norm); next; }
  /delayed for/ { printf(fmt, yellow, $0, norm); next; }
  # /skipping greylist/ { printf(fmt, blue, $0, norm); next; }
  { print; }

Same deal with the "^[".



  Paul Chvostek                                             <paul at it.ca>
  it.canada                                            http://www.it.ca/

More information about the freebsd-questions mailing list