2017-03-29 7 views
1

Ich versuche, neue Zeilen zu NSlog hinzuzufügen.NSlog druckt keine neuen Zeilen r n

Ich betreibe:

NSLog(@"\n%@\r\n\r\n", json1); 
NSLog(@"\n%@\r\n\r\n", json2); 

Jedoch Die Ausgabe lautet:

2017-03-29 16:09:50 InAppTestAfApp2[312:33527] 
{"attribution":"true"} 
2017-03-29 16:09:50 InAppTestAfApp2[312:33527] 
{"attribution":"false"} 

Es ignoriert neue Linie als \r\n (auch versucht \n nur), aber erste \n vor Zeichenfolge arbeitet

Ich erwarte, :

2017-03-29 16:09:50 InAppTestAfApp2[312:33527] 
{"attribution":"true"} 


2017-03-29 16:09:50 InAppTestAfApp2[312:33527] 
{"attribution":"false"} 


017-03-29 16:09:50 InAppTestAfApp2[312:33527] other logs ... 

Ich verwende Xcode 8,3

[Edit 1]

ich versuchte zu laufen:

NSLog(@"%@ %@",type, @"xxxxx\n\n"); 

Noch sehe ich:

2017-03-29 16:09:50 InAppTestAfApp2[312:33527] 
xxxxx 
017-03-29 16:09:50 InAppTestAfApp2[312:33527] other logs ... 

[EDIT 2]

um 363.210

Als Arbeit füge ich Müll am Ende, aber es sieht chaotisch:

NSLog(@"%@ %@\r\n\r\n%s",type, json, @"`"); 

Antwort

4

Carriage Return/Linefeed Paare (CR + LF) noch nie auf dem Mac benötigt worden. Klassisches MacOS verwendet CR, und MacOS X verwendet LF (aufgrund seines Unix-Erbes). Es ist also nicht verwunderlich, dass NSLog() die CR-Zeichen aus dem Text löscht, den Sie protokollieren.

Es ist auch nicht überraschend, dass NSLog() den Leerraum vom Ende Ihrer Protokollanweisungen abschneidet. NSLog() ist für Protokollierung Nachrichten gemeint - es ist kein allgemeiner Zweck print Aussage. Es ist nützlich, Protokolle kompakt zu halten, und das Abschneiden leerer Zeilen am Ende einer Nachricht dient diesem Zweck.

Wenn Sie in Ihre Nachrichten wirklich Leerzeichen einfügen möchten, um bestimmte Protokollmeldungen möglicherweise deutlicher hervorzuheben, können Sie dies tun, indem Sie nach den Leerzeilen ein Druckzeichen einfügen. Zum Beispiel:

NSLog(@"\n\nMy Really Important Message\n\n."); 

Das Ergebnis:

2017-03-29 09:28:12.898 MessageTest[13407:2524935] 

My Really Important Message 

.