Re: The usefulness of application logging
James Kanze wrote:
Greg Herlihy wrote:
apm35@student.open.ac.uk wrote:>
I wonder what use people make of logging generally. Perhaps
people can share their experiences and opinions here. Surely
there is more than just these two ways of doing it.
This following is not meant to be a criticism of anyone, but I
have found that inexperienced programmers are usually the ones
whose code makes heavy or systemic use of application logging
as a QA technique.
I've found just the contrary. It's inexperienced programmers
who don't realize just how useful it can be, and simply suppose
that it will be too expensive. Experienced programmers
generally log pretty heavily. (I know that I've consistently
increased the amount I log as I've gained experience.)
Regardless of the amount of application logging a programmer may
perform while writing a program (which is a matter of personal
preference), I would expect that the more experienced programmer would
be more likely to remove all logging code once work on the program had
completed. After all, the purpose of the logging code is aid
development, so once development is over, the logging code has
necessarily outlived its usefulness. The logging code in a finished
program becomes simply a liability: potentially impairing the program's
efficiency, its stability or even its security. Just to be clearthat
this discussion concerns only developer-added logging - that is,
logging that is not part of the program's specification. Many programs
do maintain logs of their own activities as part of their routine,
planned operation - and that is not the type of logging being discussed
here.
In reality, the problem is not so much leaving extraneous logging code
in a finished program - the problem is really ever adding logging code
the program in the first place. Logging code really belongs somewhere
else. After all, the purpose of logging is to document a program's
state at a particular point - and to capture that information should be
possible without having to change the program itself. By modifying the
program in order to log its execution, the program being logged is no
longer identical to original program or the program as it will ship.
In order to obtain logs as accurate as possible, the logging should be
conducted as part of the program's execution enviroment. Running the
program under a debugger, and configuring the debugger to output the
information of interest accomplishes that goal quite handily. Having
the debugger generate the program's execution log allows the programmer
maximum flexiblity in obtaining the information of interest - and to do
so without ever having to alter the program under observation. And by
keeping separate the data collection and the program's execution logic,
there is no danger of any logging code winding up in the finished
product where - at the very least - it is of no value to the user
running the program (since a user generally wants to run a shipping
program for some purpose other than to debug it).
Greg
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]