[logback-dev] RFC: LoggingEvent redesign
Maarten Bosteels
mbosteels.dns at gmail.com
Mon Feb 23 16:08:19 CET 2009
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 implements MutableLoggingEvent
And wherever possible use a ImmutableLoggingEvent .
Maarten
On Mon, Feb 23, 2009 at 1:44 PM, Ceki Gulcu <ceki at qos.ch> wrote:
> 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<String, String> getMDCPropertyMap();
> String getMessage();
> String getThreadName();
> ThrowableDataPoint[] getThrowableDataPointArray();
> long getTimeStamp();
>
> void setArgumentArray(Object[])
> // other setters omitted
> }
>
>
> // localized usage, temporary lifespan
> class LoggingEvent implements ILoggingEvent {
> // getter and setter methods from ILoggingEvent omitted
>
> void prepareForDeferredProcessing();
>
> // create a LoggingEventMemento image of this LoggingEvent
> LoggingEventMemento asLoggingEventMemento();
> }
>
>
> // distributed (or remote) usage, long term lifespan
> class LoggingEventMemento implements ILoggingEvent {
> // getter and setter methods from ILoggingEvent omitted
>
> int getVersion();
> makeImmutable();
> }
>
>
> LoggingEvent is intended to be used within the application generating
> the logging event. LoggingEventMemento is intended for remote
> applications (applications other than the application at the origin of
> the event) and for longer term lifespan. LoggingEventMemento objects
> are intended to be compatible across logback versions. If possible,
> LoggingEventMemento should also be suitable for long term storage (on
> disk).
>
> Both LoggingEvent and LoggingEventMemento implement the ILoggingEvent
> interface so that most logback-classic components, assuming they
> expect to operate on ILoggingEvent instances, will be able to handle
> LoggingEvent or LoggingEventMemento objects interchangeably.
>
>
> Instead of LoggingEvent, those appenders which perform serialization,
> will be serializing instances of LoggingEventMemento. The
> asLoggingEventMemento() method in LoggingEvent will return a
> LoggingEventMemento image of a given LoggingEvent.
>
> Obviously there several technical obstacles to overcome. However, I am
> soliciting your comments about the general goals of the above
> redesign. Do they make sense? Have I omitted important goals?
>
> TIA,
>
> --
> Ceki Gülcü
> Logback: The reliable, generic, fast and flexible logging framework for
> Java.
> http://logback.qos.ch
> _______________________________________________
> logback-dev mailing list
> logback-dev at qos.ch
> http://qos.ch/mailman/listinfo/logback-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://qos.ch/pipermail/logback-dev/attachments/20090223/db5abca4/attachment.htm>
More information about the logback-dev
mailing list