2016-09-20 3 views
8

Ich habe den folgenden Code:Drucken ein Array mit slf4j druckt nur das erste Element

private static final Logger logger = LoggerFactory.getLogger(Some.class); 
... 
String[] splits=someString.split(".."); 
logger.info("The string was split into <{}>",splits); // prints first element 

Was ist der richtige Weg, um den gesamten Inhalt eines Arrays mit slf4j drucken?

+1

@ JimJim2000 Die Art, wie Sie das Array drucken, ist in Ordnung, slf4j (wenn es von log4j, Logback oder einer anderen Implementierung unterstützt wird) wird den Inhalt des Arrays ausgeben. Daher müssen Sie uns sagen, was "nicht funktioniert" genau bedeutet. Siehst du irgendwelche slf4j Nachrichten? Irgendeine Ausgabe? Ist Ihnen bekannt, dass der ['String # split()'] (http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-) Methode, die Sie aufrufen, akzeptiert eine Regex, und dass ".." ist eine Regex, die eine Bedeutung hat? –

Antwort

14

Das Problem ist, dass mit dem folgenden Code

logger.info("The string was split into <{}>", splits); 

Sie die Methode info(String format, Object... arguments) sind aufgerufen wird. Beachten Sie, dass das letzte Argument ein Varargs ist. Daher wird das übergebene Array als jedes Argument des Variablenarguments interpretiert.

In diesem Fall möchten Sie jedoch ein Array als erstes Argument übergeben. Eine einfache Problemumgehung besteht darin, sie in Object zu konvertieren.

String[] splits = { "foo", "bar" }; 
logger.info("The string was split into {}", (Object) splits); 

loggt The string was split into [foo, bar], wie erwartet.

+0

Ohhhhh! Ja, das ist es. –

Verwandte Themen