it-swarm.com.de

Anzeigen von os_log-Meldungen in der Gerätekonsole

Ich versuche, mich über Unified Logging (os_log) von meiner App abzumelden.

Hier ist die Initialisierung des Protokolls:

var osLog : OSLog = OSLog(subsystem: "com.test.testapp", category: "native-tester")

Und so benutze ich es:

os_log("iOS App initialized successfully!", log: osLog, type:.info)

Wenn Sie die App normal debuggen, werden die Protokolle ordnungsgemäß in der Konsolenausgabe angezeigt. Wenn ich jedoch die Gerätekonsole (im Fenster "Geräte und Simulatoren" angezeigt) anschaue, werden sie überhaupt nicht angezeigt.

Dieser Artikel besagt, dass Sie das System so konfigurieren sollten, dass die Debug-Protokolle mit aktiviert werden

Sudo log config --mode "level:debug" --subsystem com.test.testapp

Aber das schien keinen Unterschied zu machen. Ich vermute, es liegt daran, dass ich den Mac so konfiguriert habe, dass er die Protokolle anzeigt, nicht das iPad.

Wie zeige ich die ipad/iphone-Protokolle von os_log in der Gerätekonsole an?

11
Nitay

Im Fenster "Geräte und Simulatoren" werden nur Absturzberichte angezeigt. Verwenden Sie die Konsole-App oder das Terminal mit dem Befehl log --stream, um die Live-Protokollausgabe anzuzeigen.

So können Sie die Live-Protokollnachrichten des Geräts über die Console-App anzeigen, wenn Sie Xcode oder direkt vom Gerät ausführen:

  • Öffnen Sie Console.app.
  • Klicken Sie im linken Bereich unter "Geräte" auf den Namen des Geräts.
  • Wählen Sie Aktion und dann Infomeldungen einschließen aus dem Menü. Wenn Sie auch Meldungen auf .debug-Ebene verwenden, müssen Sie auch Debug-Meldungen einschließen auswählen. (Wenn diese Elemente nicht ausgewählt sind, zeigt die Konsole nur Meldungen auf der Ebene .default, .fault und .error an.)

Wenn die Nachrichten immer noch nicht angezeigt werden, geben Sie diesen Terminalbefehl ein, um die Protokollierungsstufen für Ihre App zu konfigurieren:

Sudo log config --subsystem com.test.testapp --mode level:debug

Dies aktiviert die Protokollierung auf .debug-Ebene für das Subsystem "com.test.testapp" (das .info- und .default-Nachrichten enthält).

Wenn Sie die Nachrichten beibehalten möchten, anstatt den Standardwert für den Nur-Arbeitsspeicher, aktivieren Sie die Persistenz für die drei Ebenen gleichzeitig:

Sudo log config --subsystem com.test.testapp --mode level:debug,persist:debug

Unabhängig von den Protokolleinstellungen werden im Fenster "Geräte und Simulatoren" jedoch nur Absturzberichte angezeigt.

11
leanne

Die Protokolle Typ .debug und .info sind standardmäßig nur Arbeitsspeicher (werden nicht auf der Festplatte gespeichert), sodass sie auf der Gerätekonsole nicht sichtbar sind.

Detaillierte Informationen: https://developer.Apple.com/documentation/os/logging?language=objc

Auch hier ist ziemlich schön WWDC: https://developer.Apple.com/videos/play/wwdc2016/721/

4
Tomasz Czyżak

Noch eine Falle: Wenn Sie OS_ACTIVITY_MODE in Ihrem Schema auf disable gesetzt haben, werden in der Konsole keine Protokolle für Ihre App angezeigt.

Sie müssen dieses Argument entfernen oder deaktivieren.

3
samwize