From: Stephen R. <kiw...@ma...> - 2009-10-25 19:53:47
|
As previously noted in a feature request on sourceforge, I am interested in modifying log4cpp to be useable within real-time systems. I have made a series of preliminary changes to support this, and I wanted to start working with the log4cpp developers to see best how to fit these changes in. Primarily, I had to remove the default hierarchy maintainer, and change LoggingEvent to use std::string variants that used a O(1) memory allocator. There were also some other minor build system changes required. The reason I had to replace the default hierarchy maintainer is that I need to build our own Category objects, which are derived from log4cpp::Category. The easiest method up front was to copy/paste the hierarchy maintainer and change just HierarchyMaintainer::_getInstance. Do you have any recommendations on how to do this in a better manner than just replacing the entire class? Has anyone considered use of a Factory pattern, or something similar? I opted to change only LoggingEvent (and small amount of other necessary code) to use the real-time allocatable strings, rather than change all of log4cpp. This means that from a user point of view, they really only see std::string. Does this seem reasonable? I've tested the changes under Mac OS X Snow Leopard and Ubuntu Jaunty. Cheers Stephen |