2017-09-05 4 views
1

Ich habe ein Projekt zitieren Drittanbieter-Frameworks. in dem es NSLog verwenden. Ich möchte NSLog zu einem anderen Ziel umleiten (zB Dotzu)Wie umleiten NSLog zu Drittanbieter-Protokollziel in Swift-Projekt?

Kann NSLog in meinem Projekt überschrieben werden?

+0

Mögliches Duplikat von [Redirect NSLog to File in Swift funktioniert nicht] (https://stackoverflow.com/questions/41680004/redirect-nslog-to-file-in-swift-not-working) – ColGraff

Antwort

2

Sie können es nicht überschreiben, weil es eine Funktion ist, keine Methode. Allerdings schreibt NSLog() zusätzlich zu stderr unter bestimmten Bedingungen wie in der Diskussion von NSLogv() angegeben, das durch NSLog() genannt wird:

Protokolliert eine Fehlermeldung an die Apple-System-Log-Anlage (Mann 3 asl sehen). Wenn der Dateideskriptor STDERR_FILENO vom Standardwert weggereicht wurde oder in ein tty geht, wird er ebenfalls dort geschrieben. Wenn Sie die Ausgabe an anderer Stelle weiterleiten möchten, müssen Sie eine benutzerdefinierte Protokollierungsfunktion verwenden.

So einfach umleiten STDERR_FILENO mit freopen().

+0

Vielen Dank, Sie löste mein erstes Problem, aber wie man es an [Dotzu] (https://github.com/remirobert/Dotzu/) richtet? Es scheint, als gäbe es keinen Weg? –

+0

Tut es sich nicht selbst? Es gibt eine Option: Öffnen Sie eine "Pseudodatei" und leiten Sie diese um. Dotzu müsste dies jedoch unterstützen. Ich kenne Dotzu nicht. –

+0

ich nicht. Ok, danke für deine Antwort. ich werde es versuchen –