2016-07-05 23 views
5

Hallo Ich habe eine Frage zu einem log4j Logger.log4j regulären Ausdruck? [{}}

Es gibt einen Teil des Logger-Textes, dem ich nicht ganz folge. Die Linie sieht aus, als

logger.debug("Some text goes here [{}] and some more text here", someObject.function()); 

folgt ich einen Blick hatte, aber ich kann das nicht scheinen als regulärer Ausdruck zu finden, es riecht stark wie es sein könnte, obwohl und ich vermute, dass es durch die zurück ersetzt werden Wert von someObject.function()10 viel wie man String-Werte in der Ausgabe durch Platzieren eines% s ersetzen könnte. Würde ich in dieser Annahme richtig liegen? wenn nicht, bitte erläutern Sie, was es tut.

Antwort

3

ein regulärer Ausdruck Es ist nicht ersetzt bekommen. {} ist eine spezielle Syntax zum Ausdrucken von Objekten, die der Verkettung von Zeichenketten vorzuziehen ist. Zum Beispiel

logger.debug("{}, {}", o1, o2); // 2 objects will be printed 
logger.debug(o1 + ", " + o2); // the same in concatenation style 

Ich schlage vor, über advantages of formatting with {} instead of string concatenation zu lesen.

Ich möchte hinzufügen, dass die meisten Logging-Systeme unterstützen asynchronous logging parameterized messages, bedeutet, dass Sie immer einen tatsächlichen Wert erhalten (es garantiert nicht durch Verkettung).

+0

Danke für die zusätzlichen Informationen :) –

2

Der Wert someObject.function() wird in {}

+2

Danke, kurze und klare Antwort. –