Re: [logback-dev] RFC: LoggingEvent redesign

2009-03-26 Thread Ralph Goers
On Feb 26, 2009, at 12:44 AM, Ceki Gulcu wrote: Ralph Goers wrote: On Feb 25, 2009, at 7:35 AM, Ceki Gulcu wrote: I was meaning to ask. Why do you need support from LocationAwareLogger for argument arrays if you are going to use logback-classic underneath SLF4J? I'm not sure what you are

Re: [logback-dev] RFC: LoggingEvent redesign

2009-03-02 Thread Ralph Goers
On Feb 26, 2009, at 12:44 AM, Ceki Gulcu wrote: Ralph Goers wrote: On Feb 25, 2009, at 7:35 AM, Ceki Gulcu wrote: I was meaning to ask. Why do you need support from LocationAwareLogger for argument arrays if you are going to use logback-classic underneath SLF4J? I'm not sure what you are

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-26 Thread Ceki Gulcu
As an alternative design, appenders doing serialization such as SocketAppender and JMSQueue/JMSTopicAppender can delegate the serialization transformation to a sub-component. This way, the ILoggingEvent interface need not know about serialization at all. The SDOAware interface can be thus remove

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-26 Thread Ceki Gulcu
Joern Huxhorn wrote: On 25.02.2009, at 19:33, Ceki Gulcu wrote: The SDOAware interface contains a single method: public interface SDOAware { Serializable getSDO(); } It's not necessary for the SDO to implement Serializable. This is only necessary if serialization using ObjectOutputStre

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-26 Thread Ceki Gulcu
Ralph Goers wrote: On Feb 25, 2009, at 7:35 AM, Ceki Gulcu wrote: I was meaning to ask. Why do you need support from LocationAwareLogger for argument arrays if you are going to use logback-classic underneath SLF4J? I'm not sure what you are getting at here. The implementation I wrote for

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-26 Thread Thorbjoern Ravn Andersen
Ceki Gulcu skrev: public interface ILoggingEvent extends SDOAware { I would like to ask to you not to use abbreviations, as they tend to grow to be the name normally used for the concept. See for instance NDC and MDC. One is a stack and the other a map, but only careful research reveals th

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Ralph Goers
On Feb 25, 2009, at 7:35 AM, Ceki Gulcu wrote: Ralph Goers wrote: I don't take offense at technical discussions on mailing lists. A lot can get misinterpreted. Instead, I suggest you take a look at the code and see if you think it is a horrible idea. What I'm currently actually using,

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Joern Huxhorn
On 25.02.2009, at 19:33, Ceki Gulcu wrote: The SDOAware interface contains a single method: public interface SDOAware { Serializable getSDO(); } I would like to continue working until we arrive at a situation where LoggingEventSDO better insulated from changes in LoggingEvent or sub-compo

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Ceki Gulcu
Hello all, Revision 2170, even if many classes were affected, is conceptually a minor refactoring of the LoggingEvent class. LoggingEvent class now is an implementation of the ILoggingEvent interface shown below: public interface ILoggingEvent extends SDOAware { public String getThreadNam

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Ceki Gulcu
Jörn Huxhorn wrote: Using Ralphs example: logger.logEvent(EventData data) Wouldn't it be possible to hide all that init and cleanup in the logEvent method? e.g. something like the following void logEvent(EventData data) { EventDataHolder.set(data); info("whatever"); EventDataHolder.

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Jörn Huxhorn
Ceki Gulcu wrote: > Ralph Goers wrote: >> >> I don't take offense at technical discussions on mailing lists. A lot can get misinterpreted. Good to hear. >> Instead, I suggest you take a look at the code and see if you think it is a horrible idea. I will, but not right now. I'm pretty sure it's not

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Ceki Gulcu
Joern Huxhorn wrote: I'm wondering how others are using Logback... I've always enabled caller data and can live with the fact that it's somewhat slower if actually logging something but very fast if no log event is actually generated... Computing caller data as a global option is an interesti

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Joern Huxhorn
Ceki Gulcu wrote: > Joern Huxhorn wrote: > > I disagree. I just implemented an enhanced version of the log4j NDC > > myself as you suggested on the SLF4J mailinglist. It's implemented > quite > > similar to the logback MDC but isn't serialized/used by any standard > > appender. My multiplex-appende

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Ceki Gulcu
Ralph Goers wrote: I don't take offense at technical discussions on mailing lists. A lot can get misinterpreted. Instead, I suggest you take a look at the code and see if you think it is a horrible idea. What I'm currently actually using, but would replace with this, does have more knowled

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Ceki Gulcu
Joern Huxhorn wrote: > I disagree. I just implemented an enhanced version of the log4j NDC > myself as you suggested on the SLF4J mailinglist. It's implemented quite > similar to the logback MDC but isn't serialized/used by any standard > appender. My multiplex-appenders, on the other hand, *are*

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Ralph Goers
On Feb 25, 2009, at 6:11 AM, Joern Huxhorn wrote: I wasn't trying to say that Ralph is doing anything wrong and I sincerely hope that he does not have that impression. I have no idea about audit logging at all so both Ralph and you will probably know very well what you are doing. He is usi

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Thorbjoern Ravn Andersen
Ceki Gulcu skrev: Thorbjoern, Which data point in logging event are you talking about? Well, all those that can change actually. Wouldn't that be the arguments passed? -- Thorbjørn Ravn Andersen "...plus... Tubular Bells!" ___ logback-dev mail

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Joern Huxhorn
Ceki Gulcu wrote: > > > Hello Joern, > > > I see your hammer and screwdriver analogy. However, while the > hammer-screwdriver analogy is reasonable and valid in the case of > extending slf4j/logback-classic for auditing purposes, it is not > *always* valid. Morre importantly, even if the analogy is

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Ceki Gulcu
Thorbjoern, Which data point in logging event are you talking about? Thorbjoern Ravn Andersen wrote: Ceki Gulcu skrev: The prepareForDeferredProcessing() method in the LoggingEvent class addresses that problem. Whenever a logging event is about to be serialized or transferred to another thre

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Thorbjoern Ravn Andersen
Ceki Gulcu skrev: The prepareForDeferredProcessing() method in the LoggingEvent class addresses that problem. Whenever a logging event is about to be serialized or transferred to another thread, you, as an author of an appender, are supposed to call loggingEvent.prepareForDeferredProcessing().

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-25 Thread Ceki Gulcu
Hello Joern, I see your hammer and screwdriver analogy. However, while the hammer-screwdriver analogy is reasonable and valid in the case of extending slf4j/logback-classic for auditing purposes, it is not *always* valid. Morre importantly, even if the analogy is valid, it does not necessarily

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Ralph Goers
On Feb 24, 2009, at 3:32 PM, Joern Huxhorn wrote: Hi Ceki On 24.02.2009, at 20:00, Ceki Gulcu wrote: Joern, Accepting parameters of type Object instead of String opens the door for nasty bugs as you point out. At the same time, it also constitutes an important extension point for logba

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Thorbjoern Ravn Andersen
Joern Huxhorn skrev: Hi Ceki, Thorbjoern and Maarten, I'd like to encourage all of you to take a look at my LoggingEvent implementation at I don't have an opinion on the refactoring, but I'd like for the socket server to platform agnostic (as I mentioned earlier, but I am voicing it louder n

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Joern Huxhorn
Hi Ceki On 24.02.2009, at 20:00, Ceki Gulcu wrote: Joern, Accepting parameters of type Object instead of String opens the door for nasty bugs as you point out. At the same time, it also constitutes an important extension point for logback within the limits imposed by the SLF4J API.

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Ralph Goers
Darn. I started to implement this and discovered that LocationAwareLogger doesn't have a method that accepts the object array so I am stuck serializing the data anyway - unless you'd care to add public void log(Marker marker, String fqcn, int level, String message, Object[] argArray, Thro

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Joern Huxhorn
On 24.02.2009, at 17:41, Thorbjoern Ravn Andersen wrote: Joern Huxhorn skrev: The sole reason for compressing is because the network connection is too slow. Does that hold here? It would be nice if the server allowed for both compressed and uncompressed transparently. Also gzipping is rat

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Ceki Gulcu
Thorbjoern Ravn Andersen wrote: Java programs generally create a lot of short lived objects and the garbage collectors know very well how to deal with them. I suggest we measure to see if there is a difference :) You probably have some very large datasets? Preliminary test show that ther

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Ceki Gulcu
Joern, Accepting parameters of type Object instead of String opens the door for nasty bugs as you point out. At the same time, it also constitutes an important extension point for logback within the limits imposed by the SLF4J API. I think that the org.slf4j.Logger class should contain a war

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Ceki Gulcu
Thank you for sharing this example which illustrates the point quite well. Ralph Goers wrote: Yes and no. The API would be a call like logger.logEvent(EventData data); EventData is really just a Map with a few extra methods. Under the hood the event data gets serialized to XML as the "mess

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Thorbjoern Ravn Andersen
Joern Huxhorn skrev: The sole reason for compressing is because the network connection is too slow. Does that hold here? It would be nice if the server allowed for both compressed and uncompressed transparently. Also gzipping is rather slowish :) Well, I'm using the benchmarked classes

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Ralph Goers
On Feb 24, 2009, at 7:36 AM, Joern Huxhorn wrote: Ceki Gulcu wrote: Joern Huxhorn wrote: Therefore I'd suggest to define void setArgumentArray(String[]) instead of void setArgumentArray(Object[]) (see http://jira.qos.ch/browse/LBCLASSIC-45 ) As Ralf mentioned, under certain circumstances i

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Maarten Bosteels
Hello, I agree that the Memento is probably not necesarry for achieving backwards compatibility. Google Protocol Buffers (or ApaPche Thrift) could also be interesting : * better performance than xml encoding/decoding (not yet tested it myself though) * you can update the message types without br

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Joern Huxhorn
Ceki Gulcu wrote: > Joern Huxhorn wrote: > > > I also still think that the LoggingEvent should not know about the > logic > > behind the transformation from the Object[] arguments to the String[] > > arguments. > > I am quite puzzled by your line of thought expressed above. Looking at > d.h.lilith.

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Ceki Gulcu
Thorbjoern Ravn Andersen wrote: If you write custom serializer/deserializer and keep a serialversion you can do whatever you want :) Indeed, custom serialization is probably the way to go. -- Ceki Gülcü Logback: The reliable, generic, fast and flexible logging framework for Java. http://logb

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Ceki Gulcu
Joern Huxhorn wrote: > I also still think that the LoggingEvent should not know about the logic > behind the transformation from the Object[] arguments to the String[] > arguments. I am quite puzzled by your line of thought expressed above. Looking at d.h.lilith.data.logging package, while the L

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Joern Huxhorn
Thorbjoern Ravn Andersen wrote: > Joern Huxhorn skrev: >> >> XML encoding *is* significantly slower, especially because gzipping >> isn't just an option but a must if you take a look at the increase of >> size in case of XML. > The sole reason for compressing is because the network connection is >

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Thorbjoern Ravn Andersen
Joern Huxhorn skrev: XML encoding *is* significantly slower, especially because gzipping isn't just an option but a must if you take a look at the increase of size in case of XML. The sole reason for compressing is because the network connection is too slow. Does that hold here? It would

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-24 Thread Thorbjoern Ravn Andersen
Ceki Gulcu skrev: Thorbjoern Ravn Andersen wrote: Ceki Gulcu skrev: Hello all, I would like to split/redesign the LoggingEvent object as follows: Hi. Could you elaborate on what you want to achieve? Makes it easier to evaluate your suggestion. One important goal is to better support int

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-23 Thread Ralph Goers
I'm -1 on this recommendation. SLF4J and Logback require messages to be Strings. I "cheat" in audit logging by passing a Map as one of the parameters. Although the Map can be serialized and deserialized the cost of doing that is very high when the Map is just being passed to a local Appende

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-23 Thread Joern Huxhorn
Hi Ceki, Thorbjoern and Maarten, I'd like to encourage all of you to take a look at my LoggingEvent implementation at http://apps.sourceforge.net/trac/lilith/browser/trunk/lilith-data , more specific the classes in http://apps.sourceforge.net/trac/lilith/browser/trunk/lilith-data/logging/src/

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-23 Thread Ceki Gulcu
Thorbjoern Ravn Andersen wrote: Ceki Gulcu skrev: Hello all, I would like to split/redesign the LoggingEvent object as follows: Hi. Could you elaborate on what you want to achieve? Makes it easier to evaluate your suggestion. One important goal is to better support interoperability betwe

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-23 Thread Thorbjoern Ravn Andersen
Ceki Gulcu skrev: Hello all, I would like to split/redesign the LoggingEvent object as follows: Hi. Could you elaborate on what you want to achieve? Makes it easier to evaluate your suggestion. -- Thorbjørn Ravn Andersen "...plus... Tubular Bells!" _

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-23 Thread Ceki Gulcu
Hi Maarteen, Thus far, mutability/immutablity, localness/remoteness, and storability on disk are aspects that we need to take into consideration. Are there other aspects? Maarten Bosteels wrote: Hello Ceki, Seems like a good idea to me. But what about making a read-only interface and a rea

Re: [logback-dev] RFC: LoggingEvent redesign

2009-02-23 Thread Maarten Bosteels
Hello Ceki, Seems like a good idea to me. But what about making a read-only interface and a read-write interface. interface ImmutableLoggingEvent { // only getters } interface MutableLoggingEvent { // getters and setters } LoggingEventMemento implements ImmutableLoggingEvent LoggingEvent i

[logback-dev] RFC: LoggingEvent redesign

2009-02-23 Thread Ceki Gulcu
Hello all, I would like to split/redesign the LoggingEvent object as follows: interface ILoggingEvent { String[] getArgumentArray(); CallerData[] getCallerData(); Level getLevel(); String getLoggerName(); Marker getMarker(); Map getMDCPropertyMap(); String getMessage(); String