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


in reply to Defensive Programming and Audit Trails

Dispite the barely obfuscated obsenity for a name, FoxtrotUniform
is right on! I have been working in Operations/Support for
seven years, and I have found that the vast majority of programs
out there couldn't log their way out of a saw mill. Think Windoze
"some.dll has caused a fault in module some.dll"... really freeking
helpful! NOT!

A good program should log every pertinant piece of information,
working directories, parameters passed on the command line, start times
end times, files read from/written to, etc. The log should be very
friendly to the eyes, and work well with tools such as grep.
A good log will have, lots of space between log sections, obvious signs of positive or
negative results, meaningful error messages, clearly understandable
tags, etc.

For example, this is the log of an FTP program that I wrote:
(PS -it was decided that end times would not be all that helpful in this case)

Date: Tue Aug 6 04:00:00 Ping test results: Working Using Firewall: xxx.xxxxxxx.com GEIS ID: 12:?????????? +1 File: /opt/somedir/data/xxx/xxx.2002_08_06.04.00.00 Date: Tue Aug 6 04:25:01 Ping test results: Working Using Firewall: xxx.xxxxx.com GEIS ID: ZZ:?????????? -No file to download. Date: Tue Aug 6 04:25:01 Ping test results: Working Using Firewall: xxx.xxxxx.com GEIS ID: ZZ:?????????? -[!!!]Download failed[!!!] check /opt/somedir/detailedLog for details.

In this case, the general log (above) is archived and kept for 120 days,
the detailedLog, FTP Debuging (Level 1) information, is kept in a seperate
file and archived for 30 days. This keeps the general log more "user friendly"
but still captures the truley "nitty-gritty" incase of programming errors.

Scanning through this file for errors is easy, visually the
individual entries are short, time stamped and each major
piece of the processing has an individual line in the report.

Additionally successful downloads are marked with a "+",
No data to download is marked with a "-", and errors are
marked with "!!!". These prepended characters, "+" "-" "!!!",
All work with grep pretty well. After a long weekend, with three
of four days of logs to go through, I'll just grep !!! logfile
to quickly get caught up with my log reading.