At 10:00 AM 12/21/2005, Cédrik LIME wrote:

There are a couple of annoying glitches with said code though:
1. unless I am abused, parsing stops at the first 'invalid
DELIM_START/DELIM_STOP pair', i.e. "{blah} {}" or "{\\}". Shouldn't we continue
parsing in search of a good delimiter pair?

I don't think that is the case but I'll make sure of it with test cases.

2. what if I want to pass in an Object[] as an argument to the log message? For
example:
    Object[] myArray = new Integer[] {new Integer(1)};
    log.debug("Array is: {}", myArray);
In this case, I am afraid formatted string will be "Array is: 1" instead of
"Array is: [[java.lang.Integer(1)".

That's a little tricky. In the hopefully rare case where the user really wanted to print the array and not its contents, she could write:

    Object[] myArray = new Integer[] {new Integer(1)};
    log.debug("Array is: {}", (Object) myArray);

note the cast to Object. Admittedly, intuitive, it is not.

3. you still need to modify all Logger classes for this code to be effective!

Oh, yes. :-)

FYI, I came up with following code yesterday (didn't post it as I didn't have a
chance to thoroughly test it): it iterates over the messagePattern delimiter
pairs instead of the arguments array.
Note that I still have to handle the case "one {} and an Object[] arg" (previous
case 2).

  Cédrik

Cédrik, thanks for the code. It's a pleasure to see patches coming in. The two versions of code (mine and yours) are very similar. For the sake of simplicity, I'll stick with what I've written, unless your version turns out to be simpler. :-)


--
Ceki Gülcü

  The complete log4j manual: http://www.qos.ch/log4j/
  Improve your Sudoku skills at http://www.sudoku-grok.com/


_______________________________________________
dev mailing list
[email protected]
http://slf4j.org/mailman/listinfo/dev

Reply via email to