Check out Log4j 2. It has a significantly expanded API that does just what you're looking for.
http://logging.apache.org/log4j/2.x/ Nick On Jun 9, 2013, at 4:36 PM, Ray Kiddy wrote: > > I have done something and can see where it might be generalized to help other > users of log4j. Has this issue already been discussed or dealt with in some > other way? > > I found a bunch of these in a large legacy application: > > log.debug("the object "+obj+" is something something blah blah blah"); > > The problem, of course, is that regardless of whether the Level will lead to > the statement being logged out, the obj's toString() method gets called. This > can lead, at times, to quite a bit of work. And that works gets thrown away > almost all of the time. So I have written a class that I send all of my log > statements through. That class has methods: > > static void info(Logger log, Object… objs); > static void debug(Logger log, Object… objs); > static void error(Logger log, Object… objs); > > In the info() method, the Level is checked. If it is going to print, then the > obis are iterated through. And for some kinds of objects we call toString but > some objects are handled in a smarter manner. > > It seems to me that the methods in the LoggingEvent class could have the > "Object message" parameter changed to "Object… messageObjects". > > Am I the only one who has seen the mistake shown above? I suspect not. If the > LoggerEvent class did the right thing with the messageObjects array, such as > only writing out hashes of certain objects, it seems to me that this would > help a lot of people and, if anyone wanted to customize the behavior, it > would be clear how to do so. > > Yes? No? Any other suggestions or ideas? > > cheers - ray > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] >
