Performance is directly related to the size/depth of the object being serialized. A LoggingEvent isn't very large (minus extensive MDC usage), so the impact should be minimal...
-----Original Message----- From: Damian ONeill [AePONA] [mailto:[EMAIL PROTECTED] Sent: Tuesday, June 24, 2003 8:36 AM To: Log4J Users List Subject: Re: org.apache.log4j.spi.LoggingEvent Thanks Steven, this will certainly solve my issue. Do you have any idea of how performant this method is? I am surprised that nobody else has asked for this type of functionality before in LoggingEvent. Is there a chance that LoggingEvent will ever be updated to support cloneable? Damian. Ebersole, Steven wrote: >You could simply utilize serialization to perform this. Here is a code >snippet I have in a utility class: > > public static Object deepCopy( Object incoming ) > throws java.io.IOException > { > try > { > // Serialize the incoming out to memory > ByteArrayOutputStream serBaOut = new ByteArrayOutputStream(); > ObjectOutputStream serOut = new ObjectOutputStream( serBaOut ); > > log.debug( "Starting serialization out..." ); > serOut.writeObject( incoming ); > log.debug( "Serialization out complete" ); > > // Now, re-constitue the model from memory > ByteArrayInputStream serBaIn = > new ByteArrayInputStream( serBaOut.toByteArray() ); > ObjectInputStream serIn = new ObjectInputStream( serBaIn ); > > log.debug( "Starting serialization in..." ); > Object outgoing = serIn.readObject(); > log.debug( "Serialization in complete" ); > > return outgoing; > } > catch( ClassNotFoundException cnfe ) > { > throw new java.io.IOException( "Unable to locate class on >reconstitution" ); > } > } > > >-----Original Message----- >From: Damian ONeill [AePONA] [mailto:[EMAIL PROTECTED] >Sent: Tuesday, June 24, 2003 3:19 AM >To: Log4J Users List >Subject: Re: org.apache.log4j.spi.LoggingEvent > > >We are using log4j for logging events to an event manager via the socket >appender. The event manager is running in a separate process and uses a >object input stream to build the received LoggingEvent. The Event >Manager has a internal event chain that event sinks can register with to >receive the logging event. The event sinks extend an adapter class that >provides support for handling the event. The adapter implements >runnable and has a wait queue. Each adapter is kicked off as a separate >thread where the run method dequeues the event and passes it to an >abstract method that the base class must implement. > >I wish to clone the LoggingEvent so that each adapter sub class >(separate thread) has its own copy of the event to do with as it wishes. > We invoke the Event Sinks dynamically so that the framework can be >extended by third parties, therefore I cannot guarantee or impose >restrictions on what the adapter class may do with the event. > >Since the javadoc does not say whether the LoggingEvent is thread safe, >the simplest way for me to guarantee no issues is to clone the event >before I pass it to the adapter sub class. > > >Hope this helps, >Damian. > > > > >Ceki Gülcü wrote: > > > >>Damian, >> >>LoggingEvent is not clonable and this has not been a problem this far. >>Can you please explain what you are trying to accomplish by cloning >>LoggingEvent objects? >> >>At 04:38 PM 6/23/2003 +0000, you wrote: >> >> >> >>>Is there anyone on this list that can answer this question? or is the >>>the developers list more suitable? >>> >>>Thanks. >>> >>>Damian ONeill [AePONA] wrote: >>> >>> >>> >>>>Can you please suggest the best way to clone a LoggingEvent? >>>> >>>>Thanks in advance, >>>>Damian ONeill. >>>> >>>> >>>> >>>-- >>>[EMAIL PROTECTED] >>> >>>Damian O'Neill >>>Software Engineer >>>AePONA Ltd, >>>Interpoint Building, >>>20-24 York Street, >>>Belfast, >>>BT15 1AQ >>> >>>+44 (0) 2890 275246 >>> >>>http://www.aepona.com >>> >>> >>> >>> >>>--------------------------------------------------------------------- >>>To unsubscribe, e-mail: [EMAIL PROTECTED] >>>For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >>> >>-- >>Ceki For log4j documentation consider "The complete log4j manual" >> ISBN: 2970036908 http://www.qos.ch/shop/products/clm_t.jsp >> >>--------------------------------------------------------------------- >>To unsubscribe, e-mail: [EMAIL PROTECTED] >>For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> > > > -- [EMAIL PROTECTED] Damian O'Neill Software Engineer AePONA Ltd, Interpoint Building, 20-24 York Street, Belfast, BT15 1AQ +44 (0) 2890 275246 http://www.aepona.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]