Für eine iPhone App muss ich Debugging-Daten in einer Datei sammeln, um sie zur Analyse an einen Online-Dienst zu senden. Dies funktioniert gut, indem Sie die stderr
Ausgabe in ein Datei-Handle umleiten und die Datei bei Bedarf senden. (NSLog
Ausgabe endet auch in stderr
, so dass dies auf der ganzen Linie funktioniert.) Die gleiche Methode funktioniert auch gut mit stdout
.Swift stderr und stout in eine Datei
Hier ist, wie ich das Speichern in eine Datei zu tun:
freopen(cStringFilePath, "a+", stderr) // or stdout
Die oben richtig ein UnsafeMutablePointer<FILE>
zurück, die ich verfolgen, um die Datei bei Bedarf zu schließen.
Allerdings würde ich den Inhalt der beiden stdout
und stderr
in eine Datei, müssen mit der richtigen zeitlichen Abfolge zeilen.
Der Grund dafür ist, dass ich einen Dritten Rahmen zu debuggen versuchen, den Diagnoseausgang erzeugt, sondern es stdout
eher zu stderr
schreibt.
Irgendeine Idee, wie man das erreicht?
Nein, es scheint, dass es nur die zuletzt verwendete erfassen wird. – Mundi
Korrektur. Es scheint zu funktionieren. Beeindruckend. Aber ist es sicher? Was passiert, wenn beide Streams gleichzeitig auf die Datei zugreifen? – Mundi
Ja, es sollte "sicher" sein, d. H. Es sollte nicht abstürzen, aber Sie können Ausgabe Interleaved wegen der Pufferungsregeln erhalten. Ich denke, Sie können ändern, wie Pufferung auf diesen Dateideskriptoren passiert, aber ich bin mir nicht sicher, wie es von ganz oben ist. –