Rejestrowanie danych na urządzeniu i pobieranie dziennika

Na kompilacji debugowania w Xcode, niezależnie od tego, czy używam symulatora, czy rzeczywistego urządzenia, instrukcje nslog, printf, fprintf assert i nsassert wychodzą na konsoli

Jeśli teraz uruchomię release build na urządzeniu (powiedzmy, że wyślę testową kompilację lotu i powiększę ją na moim iPhonie; będzie to release build), które z nich (jeśli w ogóle) będą nagrywane?

I jak odzyskać dziennik?

Czy NSLog faktycznie wypisuje coś na release build? Co to jest czynnik decydujący? Czy jest to zapis na stdout czy stderr? czy tylko stderr jest zapisywany do dziennika urządzeń? Czy to oznacza, że muszę używać fprintf? Czy coś jest zapisane w dzienniku urządzeń? czy istnieje w ogóle coś takiego? Jeśli tak, to jak go podnieść?

Mógłby ktoś wyjaśnić sytuację?

Author: Yahia, 2012-02-01

9 answers

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 w metodzie application:didFinishLaunchingWithOptions w pliku delegata aplikacji, a utworzy on plik dziennika w katalogu dokumentu aplikacji na iPhonie, który rejestruje wszystkie zdarzenia dziennika konsoli. Aby wyświetlić wszystkie zdarzenia konsoli, musisz zaimportować ten plik z iTunes.

Uwaga: w .plik plist upewnij się, że {[2] } Istnieje i jest ustawiony na YES, aby uzyskać dostęp przez iTunes.

Aby pobrać pliki logów : Uruchom itunes, po podłączeniu urządzenia wybierz Aplikacje-Wybierz aplikację - w Augument Dokument otrzymasz plik. Następnie możesz zapisać go na dysku

 74
Author: shyla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-10 10:17:57

W Xcode 6.1.1 można wyświetlić wyjście NSLog, wykonując następujące czynności. Nie jestem jednak pewien, czy Pozwala to zobaczyć logi z zbyt odległej przeszłości. Widziałem to tylko kilka godzin.

W każdym razie oto kroki:

  1. w Xcode przejdź do okna - > urządzenia.
  2. Wybierz urządzenie w lewym panelu.
  3. Kliknij małą strzałkę, jak pokazano na zrzucie ekranu poniżej.

Tutaj wpisz opis obrazka

 134
Author: Myxtic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-07 17:16:55

W swift 3.0 kod Szyl 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, które wyjaśnia Shyl

Wystarczy dodać ten blok kodu w metodzie application: didFinishLaunchingWithOptions w pliku delegata aplikacji, a utworzy on plik dziennika w katalogu dokumentu aplikacji na iPhonie, który rejestruje wszystkie zdarzenia dziennika konsoli. Aby wyświetlić wszystkie zdarzenia konsoli, musisz zaimportować ten plik z iTunes.

Uwaga: w .plik plist upewnij się, że Application supports iTunes file sharing istnieje i jest ustawiony na YES tak, że można uzyskać dostęp przez iTunes.

Aby pobrać pliki dziennika : Uruchom iTunes po podłączeniu urządzenia select Apps-wybierz swoją aplikację - w Augument Document otrzymasz swoją plik. Następnie możesz zapisać go na dysku

 14
Author: Kiran P Nair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-27 19:03:55

NSLog jest zapisywany do device log in production release i możesz to sprawdzić, podłączając iPhone ' a do systemu i używając organizera. Wybierz iPhone ' a w organizerze i kliknij Dziennik urządzenia. Zobaczysz wszystkie wyjścia NSLog w dzienniku.

 11
Author: Bora,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-01 14:28:31

Znalazłem ten link od APPLE bardzo pouczające i kompletne. Daje to praktycznie wszystkie opcje, aby zobaczyć lub uzyskać dostęp do dzienników urządzenia, niezależnie od tego, czy są one połączone z maszyną deweloperską.

Https://developer.apple.com/library/ios/qa/qa1747/_index.html

 6
Author: GrandSteph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-10 14:31:28

Tak, wyjścia NSLog na urządzeniu. Możesz zobaczyć jego wyjścia z urządzeniem podłączonym do komputera Mac i za pomocą narzędzia Xcode Organizer.

 2
Author: Denis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-01 14:26:34

Jeśli używasz zestawu SDK Testflight, możesz przechwycić wszystkie logi za pomocą funkcji zdalnego logowania .

 2
Author: pojo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-28 22:11:05

Wiem, że to stary wątek, ale możesz też mieć dostęp do logów urządzenia:

Ustawienia -> Prywatność -> Analityka - > DANE

Hope this help

Pozdrawiam

 1
Author: ramonesteban78,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-22 18:48:37

Myślę, że w Xcode 9.3 ekran dziennika urządzenia został przeniesiony do nowej lokalizacji.Prosimy zapoznać się z poniższym linkiem.

Pobieranie dzienników urządzeń podczas pracy w Xcode

 0
Author: Vaibhav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-27 09:55:47