Ich habe an einem Framework für mehrere Anwendungen gearbeitet, das die Protokollierung auf mehreren Ebenen implementiert. Es wird hauptsächlich in internen Anwendungen verwendet, um die Kommunikation mit anderen Geräten zu testen, wird aber auch in einigen Anwendungen verwendet, die wir verteilen werden.
Gibt es eine Möglichkeit, eine nicht abgefangene Ausnahme abzufangen und sofort Code auszuführen, um die Ausnahme in der Protokolldatei zu speichern? Im Moment schreibt die Log-Klasse nur gelegentlich in die Datei, wechselt im Falle eines Schreibfehlers usw. zwischen zwei Dateien. Das funktioniert gut, aber es wäre toll, wenn es eine unbehandelte Ausnahme auftreten könnte, schreibe ein ungeschriebenes Protokoll Einträge in Datei, beachten Sie, dass eine Ausnahme aufgetreten ist und protokollieren Sie ihre Details, und erlauben Sie dann die App zum Absturz.
Wenn es eine Möglichkeit gibt, unbehandelte Ausnahmen app-weit zu erfassen, würde ich denken, dass es so etwas wie folgt wäre:
%Vor%Wenn mir jemand Einblick oder Vorschläge geben kann, ob dies möglich ist oder nicht, würde ich es sehr schätzen.
Sie können einen anwendungsweiten unbehandelten Ausnahme-Handler in Ihrem AppDelegate hinzufügen:
%Vor% Verweise es in AppDelegate didFinishLaunchingWithOptions
as:
Sie können Ihren eigenen Ausnahmebehandler festlegen, indem Sie NSSetUncaughtExceptionHandler()
Sie können es Ihnen als App-Delegierten
nennen %Vor%Wie Sie sehen können, müssen Sie einen Funktionszeiger an eine Funktion wie diese übergeben:
%Vor%Sie müssen Ihren Ausnahmebehandler festlegen, am besten in Ihrem Anwendungsdelegaten in applicationDidFinishLaunching, dh:
%Vor%Tags und Links objective-c ios logging ios6 uncaught-exception