There are various times when a software engineer needs to closely monitor log output in real-time. More often than not the engineer is actually interested in the output of multiple logs at the same time. Given the amount of information that an application can output to log files at any one time, filtering the important information from bogus entries becomes frustrating and tedious.
One of the solutions I’ve come across recently is to colorize the log output according to the log entries’ severity.
GUI half-baked options
On GNOME-based Linux distributions there’s GNOME System Log Viewer, a GUI application that can be used to monitor logs in real-time. One nice functionality that it provides are filters which can be configured to match an expression or a regular expression; the filters allow colorizing the output according to what they match. +1 for Linux.
On Mac OS X Console.app, although is able to filter information faster and easier than GNOME System Log Viewer, is not able to highlight the lines of interest using colours. Which is a shame, given the fact that more and more developers are migrating to Macs.
tail and the power of Bash
Every Unix/Linux user has used
tail at least once (though I have my doubts regarding
some of the Mac users :P). The advantage of
tail is that it allows piping its output to whatever program able to consume information from
awk is an interpreted programming language perfect for extracting data from text
files. Given the fact that
awk can read from
stdin, it’s quite trivial to pipe data to it from which to extract more meaningful
information. Combine this with a little Bash scripting (needs Bash 4 due to associative arrays) and we have a nice and easy way to analyze
logs in real-time using colour-coded output.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
ctail.config file can be created in the same folder with
ctail to override the default colours and log levels associations.
The advantage of using
awk is that it’s present on most of the available Linux distributions and UNIX flavours and that it’s reasonably
Option no. 2:
Another tool used for filtering information is
ack, a tool “designed as a replacement
for 99% of the uses of
grep”. A similar colorized
tail script can be written like:
1 2 3 4 5 6 7 8
Credits for this solution go to Alex Klimetschek, one of my colleagues from Adobe.
ack does not come
standard on most Linux distributions, nor on Mac OS X; however, installing it is usually a few commands away with your favourite package
In the end
Being an avid terminal user, I find the
ctail script (in any of its variations) a better tool than its half-baked GUI alternatives.
ctail can also be used on servers with very little setup.
Do you know of any other interesting ways for highlighting log messages?