Colorized Tailed Log4j Files
I've been looking for something to do a decent job of colorizing the output of tail -f for the log files I watch. Nothing really amazing - just something that will highlight the different levels of the log4j file, and maybe something to pick out IP addresses, etc. Nothing fancy. But what it needs to be is simple.
I don't want to have a tool that takes over the tail command - I still want to be able to scroll up on the terminal and see what was there. I don't want something that's got all the search features, or sorting, or filtering... that's all nice, but I have all the other unix tools for those, and that's how I think. No, what I need is a simple, streaming, colorizer of the log4j stream, and then that's it.
After doing a considerable (for me, for this) digging, it looks like a little app called grc is just the thing I need. The source site is here, but there's a fork of the code on GitHub, and given that the savba.sk domain isn't responding this morning, it's nice to have the GitHub version available.
Home-brew has it as well, and so installing it is pretty simple:
$ brew install grc
and then the info on grace in Homebrew says that it's simple to start colorizing your Bash scripts by simply adding a config file to your ~/.bashrc. But for me, the configuration is a little more complex.
After reading the README at the GitHub fork, it was clear that I needed to make two files, and put them in a new ~/.grc directory: grc.conf for the general configuration of the tool, and conf.log4j for the colorization rules for the log4j files. The contents of the grc.conf file is pretty simple, and just tells grc what config file to use for what source files:
# log4j files \b\w+\b.*log\b conf.log4j
the first line is the regex for the name of the file, and the second line is config file to use. Speaking of which, the conf.log4j was created to look like:
# From http://fahdshariff.blogspot.ca/2011/04/ # highlighting-command-output-with.html # this configuration file is suitable for displaying log files #errors regexp=^.*(ERROR|Error|Exception).*$ colours=bold red ====== #stack trace regexp=^\s+at [^:]*:\d*\)$ colours=red ====== regexp=^.*(FATAL|Fatal).*$ colours=on_red ====== regexp=^.*(WARNING|Warning).*$ colours=bold yellow ====== regexp=^.*(DEBUG|Debug).*$ colours=bold black ====== # this is a time regexp=[^\d]*\d\d:\d\d:\d\d[\.,]{0,1}\d{0,1}\d{0,1}\d{0,1} colours=bold blue count=once ====== # ip number regexp=\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} colours=bold magenta count=more
At this point, I should be able to say:
$ grc tail -f log/cw.log
and grace would see the log in the filename and pick the right config file and then colorize the output of the tail command. To make this even easier, I added a simple alias in my ~/.bashrc:
alias lt="grc tail -f"
where, to me, the lt stands for Log Tail, and that's so easy for me to remember.
Now if I can just get that site to show up, and download the code. I should be ready to go. Fingers crossed...
UPDATE: I was able to download grc, and sure enough it's working like a champ!