logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ralph Goers <ralph.go...@dslextreme.com>
Subject Re: MapMessage.asString() [WAS Re: Understanding ParameterizedMessage and so on]
Date Sun, 22 Jul 2012 20:57:20 GMT
Darn, another bug.

The default formatting is supposed to use the same format as Map.toString((). However, toString()
separates the key/value pairs with ", " not just a space.  I will fix that. And adding JSON
as a format seems reasonable too.

Ralph

On Jul 22, 2012, at 1:32 PM, Gary Gregory wrote:

> Thread renamed to focus on org.apache.logging.log4j.message.MapMessage.asString().
> 
> See below.
> 
> On Sun, Jul 22, 2012 at 3:09 PM, Ralph Goers <ralph.goers@dslextreme.com> wrote:
> 
> On Jul 22, 2012, at 5:50 AM, Gary Gregory wrote:
> 
> > Hi All:
> >
> > Why does ParameterizedMessage class not implement the FormattedMessage interface?
Are we making a conceptual difference between a formatted message and a parameterized message?
> >
> > The FM Javadoc says "A Message that can have a format String attached to it"; PM
has a formattedMessage and messagePattern String. A messagePatterm sounds like a "format String"
to me.
> 
> Perhaps FormattedMessage is a bad name.  Every Message implements getFormattedMessage().
 The purpose of the FromattedMessage interface is to signify that a Message can accept additional
information to help it to determine how to format the message. In the specific cases it is
used in currently, MapMessage normally defaults to formatting the Map as {key1="value1" key2="value2"}.
> 
> Wow, this is so close to being JSON, why not make is JSON? 
> 
> For example:
> 
> {"key1": "value1", "key2": "value2"}
> 
> Since the Map is <String, String>, we do not have to worry about nested structures
or arrays.
> 
> Or, at least create an enum with XML and JSON and a third option which is what you have
now (call it SIMPLE).
> 
> Note that as it is now, IMO, it is odd to have the separator be " " instead of ", ".
> 
> Gary
>  
> If setFormat() is called with a value of "XML" then the Map is rendered as XML instead.
 So really what is being done is providing so extra formatting instructions. If you can think
of a less confusing name than Formatted Message I'd readily agree.
> 
> >
> > Would it not be simpler to have org.apache.logging.log4j.message.Message.getFormattedMessage()
as toString()? Is a toString() on each Message impl that useful for debugging that it overrides
the simplicity of using toString?
> 
> I know Joern and I had discussions around this a long time ago (he actually wrote ParameterizedMessage
before I even started on Log4j 2) but I can't recall the reasons why we decided that using
getFormattedMessage was better.
> 
> 
> >
> > ThreadDumpMessage does not implement toString(). Is that on purpose or an omission?
> 
> IMO, technically every object should override toString() as what Java prints isn't always
useful. But it isn't required since Java provides a default implementation and it isn't required
by the MessageInterface.  Now that I think about it, this is probably exactly why Message
requires getFormattedMessage().
> 
> Ralph
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-dev-help@logging.apache.org
> 
> 
> 
> 
> -- 
> E-Mail: garydgregory@gmail.com | ggregory@apache.org 
> JUnit in Action, 2nd Ed: http://bit.ly/ECvg0
> Spring Batch in Action: http://bit.ly/bqpbCK
> Blog: http://garygregory.wordpress.com 
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory


Mime
View raw message