On Wed, Oct 10, 2012 at 9:05 AM, Ralph Goers <[email protected]> wrote:
> > > Sent from my iPad > > On Oct 10, 2012, at 4:04 AM, Gary Gregory <[email protected]> wrote: > > On Wed, Oct 10, 2012 at 2:19 AM, Ralph Goers > <[email protected]>wrote: > >> >> On Oct 9, 2012, at 5:28 PM, Gary Gregory wrote: >> >> On Tue, Oct 9, 2012 at 10:19 AM, Ralph Goers >> <[email protected]>wrote: >> >>> This requires a long answer. >>> >>> Ceki realized in Logback that OutputStreams really needed a byte array. >>> So he changed Appenders to require an Encoder instead of an Appender. >>> Layouts still return a String so he created a wrapper Encoder to convert >>> the String to a byte array. >>> >>> The idea of using a byte array is correct - most of the time, as most of >>> the Appenders use an OutputStream. However, the JMS appenders don't. They >>> require a Serializable object. >>> >> >>> When developing Log4j I did not like having both Encoders and Layouts, >>> so I chose to have Layouts return a byte array. But then it made no sense >>> to have something based on the AbstractStringLayout convert the String to a >>> byte array only to have to convert it back to a String again for the JMS >>> Appenders, which is why I added formatAs(). Now the JMS Appender can send >>> both a Serialized LogEvent and a String. >>> >>> So in looking at how formatAs() is used I would think that we could just >>> change Layout to >>> >>> public interface Layout { >>> >>> Serializable formatAs(); >>> >>> ... >>> } >>> >>> OK, so we loose some type info, but that seems OK. >> >> While we are here, I think the format methods need better name especially >> since there are two and formatAs(LogEvent) is not great, I keep on thinking >> "format as... what?" A log event? No, that's what I pass in. What about >> using the to* convention here? >> >> - byte[] toByteArray(LogEvent); >> - Serializable toSerializable(LogEvent); >> >> >> Yes - I like those names better. >> > > I see you changed formatAs(LogEvent) to toSerialized(LogEvent) but I do > not feel this is correct because the object has not been serialized, it has > merely been converted into an object that *can be *serialized, hence my > proposal for toSerializable(LogEvent), because the method returns a > Serializable. > > > Rats. I meant to use the name you proposed. > Fixed in SVN. We're done with this thread :) > > Ralph > -- E-Mail: [email protected] | [email protected] JUnit in Action, 2nd Ed: <http://goog_1249600977>http://bit.ly/ECvg0 Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory
