Apache log4cxx
Version 0.12.1
|
Sometimes, you may want to extend log4cxx, for example by creating a new appender to write out data in a new format. The following guide shows how you can extend log4cxx in order to add a new appender.
The full sample application can be found in the src/examples/cpp directory.
The first thing for our example is to create a class that extends log4cxx.AppenderSkeleton so that we don't need to implement all of the virtual methods that are defined in log4cxx.Appender:
Next, we need to add in a few macros in order to properly register our new appender with log4cxx:
These macros tell log4cxx what the name of our class is, as well as giving log4cxx a way of instansiating our class. Without these macros, the custom class will not work.
Now, let's add some basic functionality to our class. As the name of our class implies, we are going to do nothing with our appender here, as this is just an example. To that end, we need to implement the following:
close
methodrequiresLayout
methodappend
method, which does the actual writing of the log eventactivateOptions
, which causes the class to reconfigure itselfsetOption
, which gets called whenever we get an option in a config fileThese are basically stub methods, with a few comments on their use:
At this point, we now have a fully functioning(if useless) custom appender. We can now refer to this appender in our configuration file like so:
When log4cxx is configured, any messages that go to the NullLogger
will then be forwarded on to the NullWriterAppender
.
This same technique can be used to add new classes of many different kinds to log4cxx, including(but not limited to):