From: Kent J. <ke...@ke...> - 2004-01-19 22:13:38
|
I took a belt-and-suspenders approach. First, I replace sys.stdout and sys.stderr with a class that redirects to log4j. The solution I have for this is a little too simple at this point, I just implement write() and try to figure out whether to output a newline or not. It really needs to be a OutputStream implementation rather than a quick hack. There are two problems with the quick-and-dirty approach. One is that a statement like print a, b results in several calls to stdout.write() (three or four IIRC). If each call is forwarded to log.info(), then there are too many newlines in the log. Second, stdout ends up getting back to Java code that expects an OutputStream and that code breaks. So to do this right I need a proper filter that buffers data from write() until it gets a newline, then flushes to log4j. I also replaced sys.excepthook, though I don't think this is really needed. Finally to catch exceptions in the event thread I do use the hack that involves setting a system property. There is a nice implementation of this in the Abbot GUI testing package (see http://abbot.sourceforge.net/doc/api/abbot/util/AbstractEventExceptionHandler.html); I modified that one to use log4j instead of the Abbot log. It probably would have been easier just to replace System.out and System.err; I guess that shows the lengths I will go to to avoid writing Java :-) HTH, Kent >Kent Johnson wrote: > >Sorry all for the multiple postings of this question, I have a solution now. > > >Why don't you post your solution to the list? Some of us spectators >are interested :-) > >If the issue is specifically catching exceptions from the event >thread, then we found one solution that involves setting a property >somewhere to the name of a class to handle exceptions. But this was >undocumented and may change in future versions. I believe we found >it only by looking through Sun's Java source code. > >If you found another solution and would like more info about this >one, let me know. > >Michael > >-- >Michael Haggerty >mh...@al... -- Kent S Johnson http://www.kentsjohnson.com |