Re: Help finding appropriate design pattern for event loggin
Hi,
Greg Dharma wrote:
I do not need to log to a file...the utility needs to print out all
information right away to a screen and I do not want many couts/prints
cluttering up the code in various places. I would like to be able to
send event information to a central location and this could then
format the data appropriately and then output it (to the screen for
now) but possibly to a DB or file later (in which case having all data
being collected in a central place would be definitely useful).
since you have to serialize the information anyway all event classes
should provide a common interface for this job. Furthermore it is
helpful to have some common properties like a severity level. That might
control e.g. coloring in case of screen visualization. And the
collection might calculate some aggregate information like total success
from that. If you want to support filters, more common properties like a
time stamp and context information about the event source, e.g. the
logical component of the application. Individual structures for each
type of event are only useful if there is someone who needs this kind
information in machine readable format. And this is rather unlikely to
happen outside your event classes because it would require RTTI dispatching.
If you do not want to pass a reference to your event collector anywhere
around, you could use thread local storage. For the time of a service
request the TLS could point to your individual request collector. And
once the request is completed the collector is detached from the current
thread. This is an easy and usually high-performance solution.
Unfortunately it requires platform dependencies until C++0x.
Marcel