I've not had better luck. I think it's the way it is. Here's how I do it - I'd like to know how others do.
I use hundreds of log messages so I can trace the flow of my program. I make the method calls for logging easy to type - dbmd("a debug msg") or dbmw("warning message"). I code traces into action classes from the start. to show the perform method starting & ending so a dud struts config is found because the Action i expect to run doesn't log it's start. I check for null pointers all over the place & log a warning or throw an exception for them. I constantly restart the server (tomcat 3.2.2) to make weird problems go away. Auto class reloading doesn't work properly so - I restart after every compile. I use these 3 methods in jsp's & Action classes a lot, to check the contents of the session & request - this finds things left in the session by mistake. public static void printSessionAttributeNames(String caller, HttpSession session) { public static void printRequestAttributeNames(String caller, HttpServletRequest request) { public static void printRequestParameters(String caller, HttpServletRequest request) { I've attached the code for them, someone may find them useful - the codes a bit dodgy & old but it's easy to understand. I have my own logging code (from old servlet programming) but I want to use log4j (one day!) - You really need to be able to switch trace messages on/off without re-compiling classes or restarting the server. Only when it's quite reliable do I remove the messages. Often I just comment the mesages out in expectation it will go wrong in future. All in all a bit primitive compared to some (non-web) environments I've worked in. we're in the early days - things will get easier. We'll get informative/instructive messages that tell us what to do to put it right & we'll be able to step thru our action classes in the debugger. Happy bug hunting! - Keith --- "Kilmer, Erich" <[EMAIL PROTECTED]> wrote: > Thought I would give this one more try. Has anyone had better luck with > debugging problems caused by say bad action mappings, ie: mis-named action > classes, missing action forms etc. Currently when these problems are > encountered I see no useful error messages in any of my logs (even when > debug is set to 2). > Is this just the way that it is or have I failed to do something? > > Thanks, > Erich > > Sent previously: > > I have been using Struts for some time now. My app's Struts config file has > almost 50 action mappings so I have been down this road a time or two. > Many times when adding a new mapping I run into errors though. For example > the latest on was where the mapping listed an action class called something > like UserCreateAction (package removed). But when I wrote the class itself I > named it UserAddAction. > Now when I built the app and moved to the Orion apps server and ran it when > I get to the JSP that references this action mapping I get a null exception. > Typically I do not catch exceptions in a JSP and the uncaught exceptions go > to my error JSP where it states that the exception is null. > So I go into my web.xml file and change the debug param to 2. I also changed > detail to 2. (By the way what does detail = 2 do?) > Then I re-ran everything after rebuilding and re-deploying. The app still > does the same thing. > OK, fine now I go to check the logs. I check the apps server log where > system outs go. I see no Struts messages except for the flurry of them at > startup. I look at the log4j error logs and see nothing. I also looked at > the apps servers application log where I see some Struts messages but see > nothing about this error. > > So my Struts debugging question is this. Are errors encountered when > converting the Struts tags in my JSP written anywhere? Is there more debug > settings I must make? Is there another log that I can check? > > I know this is a fairly simple example and I am getting better at debugging > them but it would be nice if there was someway to make this so I check the > log and it says that "Action class UserCreateAction does not exist". > > Let me know, > Erich Kilmer > Bell+Howell > > > > -- > 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]> > __________________________________________________ Do You Yahoo!? Send FREE video emails in Yahoo! Mail! http://promo.yahoo.com/videomail/
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - public static void printSessionAttributeNames(String caller, HttpSession session) { Enumeration ee3 = session.getAttributeNames(); dbmd("printSessionAttributeNames: for caller: "+ caller +" -start..."); while (ee3.hasMoreElements()) { String name = (String)ee3.nextElement(); Object object = session.getAttribute(name); String className = object == "null" ? null : object.getClass().getName(); dbmd(name +" of class:"+ className); } dbmd("printSessionAttributeNames: for caller: "+ caller +" - end"); } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - public static void printRequestAttributeNames(String caller, HttpServletRequest request) { Enumeration ee2 = request.getAttributeNames(); dbmd("printRequestAttributeNames: for caller: "+ caller +" - start..."); while (ee2.hasMoreElements()) { String name = (String)ee2.nextElement(); Object object = request.getAttribute(name); String className = object == "null" ? null : object.getClass().getName(); dbmd(name +" of class:"+ className); } dbmd("printRequestAttributeNames: for caller: "+ caller +" - end"); } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - public static void printRequestParameters(String caller, HttpServletRequest request) { Enumeration ee5 = request.getParameterNames(); dbmd("printRequestParameters: for caller: "+ caller +" - start..."); while (ee5.hasMoreElements()) { String name = (String)ee5.nextElement(); String[] values = request.getParameterValues(name); String print = "name: "+ name +" value(s): "; for (int ii5 = 0; ii5 < values.length; ii5++) { print += values[ii5]; if (ii5 < values.length - 1) { print += ", "; } } dbmd(print); } dbmd("printRequestParameters: for caller: "+ caller +" - end"); }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>