W kompilacji debugowania w Xcode, niezależnie od tego, czy używam symulatora, czy rzeczywistego urządzenia, na konsoli pojawiają się instrukcje NSLog, printf, fprintf assert i NSAssert
Jeśli teraz uruchomię kompilację wydania na urządzeniu (powiedzmy, że wyślę kompilację do lotu testowego i zwiększę ją na moim iPhonie; będzie to kompilacja wydania), które z nich (jeśli w ogóle) zostaną nagrane?
Jak mogę odzyskać dziennik?
Czy NSLog faktycznie wyświetla coś podczas kompilacji wydania? Co jest decydującym czynnikiem? Czy jest to zapis na stdout czy stderr? czy tylko stderr jest zapisywane w dzienniku urządzenia? Czy to oznacza, że muszę używać fprintf? Czy COŚ zostało zapisane w dzienniku urządzenia? czy jest coś takiego? Jeśli tak, jak to odebrać?
Czy ktoś mógłby wyjaśnić sytuację?
Odpowiedzi:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *fileName =[NSString stringWithFormat:@"%@.log",[NSDate date]]; NSString *logFilePath = [documentsDirectory stringByAppendingPathComponent:fileName]; freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
Po prostu dodaj ten blok kodu do
application:didFinishLaunchingWithOptions
metody w pliku delegata aplikacji i utworzy plik dziennika w katalogu dokumentów aplikacji na iPhonie, który rejestruje wszystkie zdarzenia dziennika konsoli. Aby zobaczyć wszystkie zdarzenia konsoli, musisz zaimportować ten plik z iTunes.Uwaga: w pliku .plist upewnij się, że
Application supports iTunes file sharing
istnieje i jest ustawiony naYES
, aby umożliwić dostęp przez iTunes.Aby pobrać logi: Uruchom itunes, po podłączeniu urządzenia wybierz Aplikacje - wybierz swoją aplikację - w dokumencie Augument otrzymasz plik. Następnie możesz zapisać go na dysku
źródło
.log
plik w katalogu dokumentów iOS zapisuje tam dane wyjściowe konsoli?NSDocumentDirectory
jest to odpowiednie dla plików dziennika - zwykle jest przeznaczone dla treści generowanych przez użytkownika, ale pliki dziennika są treścią pomocniczą aplikacji, dlatego mogą należeć doNSLibraryDirectory
podkatalogu / Logs.W Xcode 6.1.1 można wyświetlić dane wyjściowe NSLog, wykonując następujące czynności. Nie jestem jednak pewien, czy pozwala zobaczyć dzienniki ze zbyt odległych czasów. Widziałem, jak cofa się do kilku godzin.
W każdym razie oto kroki:
źródło
W Swift 3.0 kod Shyl zmieni się na,
var paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) let documentsDirectory = paths[0] let fileName = "\(Date()).log" let logFilePath = (documentsDirectory as NSString).appendingPathComponent(fileName) freopen(logFilePath.cString(using: String.Encoding.ascii)!, "a+", stderr)
wszystkie inne procesy są takie same, jak wyjaśnione przez Shyl
źródło
/var/db/diagnostics/
. Zobacz tutaj .NSLog jest zapisywany w dzienniku urządzenia w wersji produkcyjnej i możesz to sprawdzić, podłączając iPhone'a do systemu i używając Organizatora. Wybierz swój iPhone w organizatorze, kliknij Dzienniki urządzeń. W dzienniku byłyby widoczne wszystkie wyjścia NSLog.
źródło
Uważam, że ten link z APPLE jest bardzo pouczający i kompletny. To prawie daje wszystkie opcje przeglądania lub uzyskiwania dostępu do dzienników urządzenia, niezależnie od tego, czy jest ono podłączone do twojego urządzenia deweloperskiego.
https://developer.apple.com/library/ios/qa/qa1747/_index.html
źródło
Tak, wyjścia NSLog na urządzeniu. Możesz zobaczyć jego wyjścia po podłączeniu urządzenia do komputera Mac i użyciu narzędzia Xcode Organizer.
źródło
Jeśli korzystasz z Testflight SDK, możesz przechwytywać wszystkie dzienniki za pomocą funkcji zdalnego rejestrowania .
źródło
Wiem, że to stary wątek, ale możesz również uzyskać dostęp do dzienników urządzenia, aby:
Ustawienia -> Prywatność -> Analityka -> Dane
Mam nadzieję, że to pomoże
pozdrowienia
źródło
Myślę, że w Xcode 9.3 ekran dziennika urządzenia został przeniesiony do nowej lokalizacji. Prosimy zapoznać się z poniższym linkiem.
Pobierz dzienniki urządzeń w czasie wykonywania w Xcode
źródło