We wrote a base class which all the data classes extend. Among other things it implements a reflection-based toString() that properly interrogates superclasses and permits Modifier-based filtering. If anyone is interested I can see if it would be permissible for me to post it.
Jim Cakalic > -----Original Message----- > From: Benson Chen [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, December 18, 2001 12:39 PM > To: Log4J Developers List > Subject: Re: automatic trace insertion > > > Vincent, > > Yup, I don't doubt that that's the way to do it.... nice > clean separation of > logic and data. In order to make sense of the trace, > everyone has to make > sure that the toString() method is implemented for each data > object. Actually > this leads to another question (which might need another > thread)... does > anyone know of some code that automatically creates > toString() methods? > Possibly using reflection to get instance variables and fills in the > toString() method for you. As you can see, I'm a proponent > of any form of > automation... maybe because I'm lazy. :-) -Benson > > Vincent Massol wrote: > > > In our case, the data objects are just that ... data objects. These > > objects are manipulated by business methods (they are passed as > > parameters or returned). As you can seem, the AspectJ code I have > > provided does log all the parameters using the toString() > representation > > of an object. So each of our object has a printable toString method. > > > > -Vincent > > > > > -----Original Message----- > > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] On > Behalf Of Benson > > Chen > > > Sent: 18 December 2001 17:15 > > > To: Log4J Developers List > > > Subject: Re: automatic trace insertion > > > > > > Well sometimes logging those setter methods are just as important > > because > > > you > > > want to know as you trace through your code that some > object's state > > has > > > been > > > modified. As to solve the volume problem, I wouldn't > enable logging > > to > > > your > > > whole system all at once unless of course you are doing system > > testing. > > > The > > > beauty of log4j is that you can have all sorts of > categories (one for > > each > > > class) to allow you to enable or disable traces depending > on what you > > are > > > interested in and the amount of volume you want to deal with. > > > Actually, one thing I was thinking about was having some sort of > > > intelligent > > > trace enablement where all traces are disabled by default but if a > > > RuntimeException is thrown, you have code that goes > through the stack > > > trace > > > and enables trace logs for classes/methods leading up to the > > exception. > > > This > > > way when you run your system again, you'll have logs tailored to > > watching > > > exactly what events occurred before your system blew up. > > > Again, I'm not dictating how you should use log4j, but I > would think > > that > > > being able to easily get at more information is always best. But > > using > > > log4j > > > in any capacity is better than none at all. :-) -Benson > > > > > > Vincent Massol wrote: > > > > > > > You are right, Paul, it is important not to log > everything, as logs > > tend > > > > to grow big very quickly and performance suffer a lot. > In my project > > we > > > > use AspectJ to log entries and exits with the following rules : > > > > > > > > - public methods that accept at least one parameter (static and > > > > non-static), > > > > - exclude the data object packages (we have all our > data objects - > > > > setter/getter objects - located in a package) > > > > > > > > These rules seem to strike a good balance (at least for > us). Then, > > we > > > > use the log4j configuration to turn on/off logging for specific > > > > categories. > > > > > > > > -Vincent > > > > > > > > > -----Original Message----- > > > > > From: Paul Glezen [mailto:[EMAIL PROTECTED]] > > > > > Sent: 18 December 2001 15:07 > > > > > To: Log4J Developers List > > > > > Subject: RE: automatic trace insertion > > > > > > > > > > Scott brings up an important point. Do you really > want to trace > > every > > > > > method? Even simple getters/setters? Not only will > there be a > > > > > performance > > > > > penalty (acceptable in some circumstances), it would > also create > > more > > > > > volume than you might want. > > > > > > > > > > Paul Glezen > > > > > Consulting IT Specialist > > > > > IBM Software Services for WebSphere > > > > > 818 539 3321 > > > > > > > > > > > > > > > Scott Coleman <[EMAIL PROTECTED]> on > 12/18/2001 06:57:50 > > AM > > > > > > > > > > Please respond to "Log4J Developers List" > > > > <[EMAIL PROTECTED]> > > > > > > > > > > To: "'Log4J Developers List'" <[EMAIL PROTECTED]> > > > > > cc: > > > > > Subject: RE: automatic trace insertion > > > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > I have not read the whole article yet, but I think > you will get a > > > > heavy > > > > > performance penalty if you use JPDA. > > > > > Can someone please explain to me why you would want > to log both > > entry > > > > and > > > > > exit calls, for such a thin layer in the code. I > thought that it > > was > > > > meant > > > > > to be very fast. So why would you want to add the performance > > overhead > > > > of > > > > > logging entry and exit information. If you were to go > down this > > path > > > > would > > > > > it not be better to use jdk 1.4's new assert feature ? > > > > > > > > > > Regards > > > > > Scott > > > > > > > > > > -----Original Message----- > > > > > From: Cakalic, James [mailto:[EMAIL PROTECTED]] > > > > > Sent: Monday, December 17, 2001 11:37 PM > > > > > To: 'Log4J Developers List' > > > > > Subject: RE: automatic trace insertion > > > > > > > > > > > > > > > This article about Jylog -- a JPDA based logging > generator -- just > > > > > appeared > > > > > on JavaWorld. Perhaps it relevant? > > > > > > > http://www.javaworld.com/javaworld/jw-12-2001/jw-1214-jylog.html > > > > > > > > > > Jim > > > > > > > > > > > -----Original Message----- > > > > > > From: Paul Glezen [mailto:[EMAIL PROTECTED]] > > > > > > Sent: Monday, December 17, 2001 4:25 PM > > > > > > To: Log4J Developers List > > > > > > Subject: Re: automatic trace insertion > > > > > > > > > > > > > > > > > > Hi Benson, > > > > > > > > > > > > It's not as easy as it looks to do "intelligently". > While it is > > > > often > > > > > > taught that methods should have a single entry > point and exit > > > > > > point, not > > > > > > many programmers adhear to this. It is not at all uncommon > > > > > > to find return > > > > > > statements in if-blocks and try-catch blocks. Sometimes the > > > > > > exit logic can > > > > > > get very convoluted. > > > > > > > > > > > > I've always been partial to single exit logic. I didn't > > > > > > become a fan until > > > > > > trying to insert trace statements, just as you describe, in > > > > > > other people's > > > > > > code. It can be a nightmare. > > > > > > > > > > > > - Paul > > > > > > > > > > > > Paul Glezen > > > > > > Consulting IT Specialist > > > > > > IBM Software Services for WebSphere > > > > > > 818 539 3321 > > > > > > > > > > > > > > > > > > Benson Chen <[EMAIL PROTECTED]>@porivo.com on 12/17/2001 > > 01:57:15 PM > > > > > > > > > > > > Please respond to "Log4J Developers List" > > > > > > <[EMAIL PROTECTED]> > > > > > > > > > > > > Sent by: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > To: [EMAIL PROTECTED] > > > > > > cc: > > > > > > Subject: automatic trace insertion > > > > > > > > > > > > > > > > > > > > > > > > Hi all, > > > > > > > > > > > > I'm interested in automatically inserting log4j trace > > > > > > statements at the > > > > > > beginning of all methods and right before the end > of a method > > > > (return > > > > > > statement or thrown exception). I'm presuming most > people have > > > > worked > > > > > > on projects with extensive class libraries and it > would be great > > if > > > > > > there was a class parser that could intelligently > insert log4j > > > > > > statements automatically. If there isn't anything out there > > > > > > like that, > > > > > > does anyone know of a java class parser that can be used to > > > > > > do this sort > > > > > > of thing? Thoughts or ideas? Thanks! > > > > > > > > > > > > -- > > > > > > Benson Chen > > > > > > Director of Software Engineering > > > > > > Porivo Technologies, Inc. > > > > > > Phone: (919)806-0566x12 > > > > > > E-Mail: [EMAIL PROTECTED] > > > > > > "Measuring end-to-end Web performance" > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > To unsubscribe, e-mail: > > > > > > <mailto:[EMAIL PROTECTED]> > > > > > > For additional commands, e-mail: > > > > > > <mailto:[EMAIL PROTECTED]> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > To unsubscribe, e-mail: > > > > > > <mailto:[EMAIL PROTECTED]> > > > > > > For additional commands, e-mail: > > > > > > <mailto:[EMAIL PROTECTED]> > > > > > > > > > > > > > > > > > > > > > <font size="1">Confidentiality Warning: This e-mail contains > > > > information > > > > > intended only for the use of the individual or entity > named above. > > If > > > > the > > > > > reader of this e-mail is not the intended recipient or the > > employee or > > > > > agent > > > > > responsible for delivering it to the intended recipient, any > > > > > dissemination, > > > > > publication or copying of this e-mail is strictly > prohibited. The > > > > sender > > > > > does not accept any responsibility for any loss, disruption or > > damage > > > > to > > > > > your data or computer system that may occur while using data > > contained > > > > in, > > > > > or transmitted with, this e-mail. If you have received this > > e-mail > > > > in > > > > > error, please immediately notify us by return e-mail. > Thank you. > > > > > > > > > > > > > > > -- > > > > > To unsubscribe, e-mail: <mailto:log4j-dev- > > > > > [EMAIL PROTECTED]> > > > > > For additional commands, e-mail: <mailto:log4j-dev- > > > > > [EMAIL PROTECTED]> > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > To unsubscribe, e-mail: <mailto:log4j-dev- > > > > > [EMAIL PROTECTED]> > > > > > For additional commands, e-mail: <mailto:log4j-dev- > > > > > [EMAIL PROTECTED]> > > > > > > > > -- > > > > To unsubscribe, e-mail: <mailto:log4j-dev- > > > [EMAIL PROTECTED]> > > > > For additional commands, e-mail: <mailto:log4j-dev- > > > [EMAIL PROTECTED]> > > > > > > -- > > > Benson Chen > > > Director of Software Engineering > > > Porivo Technologies, Inc. > > > Phone: (919)806-0566x12 > > > E-Mail: [EMAIL PROTECTED] > > > "Measuring end-to-end Web performance" > > > > > > > > > > > > > > > -- > > > To unsubscribe, e-mail: <mailto:log4j-dev- > > > [EMAIL PROTECTED]> > > > For additional commands, e-mail: <mailto:log4j-dev- > > > [EMAIL PROTECTED]> > > > > > > > -- > > To unsubscribe, e-mail: > <mailto:[EMAIL PROTECTED]> > > For additional commands, e-mail: > <mailto:[EMAIL PROTECTED]> > > -- > Benson Chen > Director of Software Engineering > Porivo Technologies, Inc. > Phone: (919)806-0566x12 > E-Mail: [EMAIL PROTECTED] > "Measuring end-to-end Web performance" > > > > > -- > To unsubscribe, e-mail: > <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: > <mailto:[EMAIL PROTECTED]> > <font size="1">Confidentiality Warning: This e-mail contains information intended only for the use of the individual or entity named above. If the reader of this e-mail is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, any dissemination, publication or copying of this e-mail is strictly prohibited. The sender does not accept any responsibility for any loss, disruption or damage to your data or computer system that may occur while using data contained in, or transmitted with, this e-mail. If you have received this e-mail in error, please immediately notify us by return e-mail. Thank you.