This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I'm writing a simple client/server application that will make use of logging over a network. My client sends LogRecord objects to a SocketHandler which sends XML data to the server. For some reason when I read the data on the server I'm not getting the closing tag for the root element, </log>.
I'm basing my code on this example posted on Sun's website. Running their code will demonstrate the problem. I duplicated their code below...
The problem is that the element </log> is the tail of the log message according to the XmlFormatter. The message tail is appended only when you close the handler. Since, you have programatically added the handler to the logger, you need to close it programatically. So, if you add handler.close() as the last statement in your client, you will get the end element also. The other option is to specify the handler in the logging.properties file. If you do this the handler will automatically be close when VM exits.