Re: The usefulness of application logging
Hendrik Schober wrote:
kanze <email@example.com> wrote:
Thanks for that explanation. In general, I don't like
to use streams for this.
For one, I have a parameter inserting algorithm that
works by parameter names (not position) which I use.
So log messages can also be translated, which is nigh
impossible to do with streams.
OK. I've never had a requirement that log messages be
internationalized. Or even that they be rigorously correct in a
given language---the noun may be plural, even if the number that
precedes it happens to be 1, for example. On the other hand, my
users have always been very familiar with the ostream idiom, so
using it for the log stream makes it easier for them: just
telling them to use such and such a macro as the stream is
Also, I frequently log
to Windows' 'OutputDebugStr()' API function that takes
an 'const char*' (and lets me see this in the debugger,
where clicking that log message takes me to the line
that produced it). I don't see a reason to spend time
building a stream buffer that writes into this.
A strstreambuf will handle dynamic expansion of the buffer
In my case, I typically need to support several different
destinations (file, syslog, email...), sometimes with several
destinations for the same message. Streambuf's seem to be
designed with just this sort of problem in mind.
even if I did -- creating your own stream buffers
requires an amount of knowledge of streams internal
which few C++ developers have. Requiring users of the
logging lib to write their own stream buffers would
ver much limit the number of potential users.
I provide the streambufs. The user doesn't ever see them.
Note that I've not created a generic logging system. Just a
number of custom implementations. In every case, I've been
responsible for the entire thing: the configuration file format,
parsing it, setting up the configuration, etc. All my users
ever see is the macro and what they think is an ostream.
James Kanze GABI Software
Conseils en informatique orient?e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S?mard, 78210 St.-Cyr-l'?cole, France, +33 (0)1 30 23 00 34
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]