2016-05-16 17 views
4

私はLinux上でSwift 2.2を使用しており、標準エラーストリームにデバッグ出力を書き込む必要があります。Swiftでstderrに印刷するには?

現在、私は次のことをやっている:

import Foundation 

public struct StderrOutputStream: OutputStreamType { 
    public mutating func write(string: String) { fputs(string, stderr) } 
} 
public var errStream = StderrOutputStream() 

debugPrint("Debug messages...", toStream: &errStream) 

しかし、私は2.2.1にスウィフトをアップグレードしたが、Foundationが利用できなくなったことを思いません。

Swift 2.2.1で標準エラーストリームに書き込む方法(それでも次のアップグレードでも動作します)? https://swift.org/blog/swift-linux-port/から

+0

を私はLinux上スウィフトは、現在インストールされていませんが、ドキュメントによると、 'import Glibc'はCライブラリ(stderrなど)のほとんどをインポートする必要があります。 –

+0

Mac OSでも動作しますか?それが移植可能な場合はそれが良いです。 –

答えて

5

glibcのモジュール: LinuxのC標準ライブラリのほとんどは、Appleのプラットフォーム上でダーウィンモジュールに似て、このモジュールを介して利用可能です。

だから、これはすべてのスウィフトのプラットフォーム上で動作するはずです:スウィフト3用

#if os(Linux) 
    import Glibc 
#else 
    import Darwin 
#endif 

public struct StderrOutputStream: OutputStreamType { 
    public mutating func write(string: String) { fputs(string, stderr) } 
} 
public var errStream = StderrOutputStream() 

debugPrint("Debug messages...", toStream: &errStream) 

更新:

public struct StderrOutputStream: TextOutputStream { 
    public mutating func write(_ string: String) { fputs(string, stderr) } 
} 
public var errStream = StderrOutputStream() 

debugPrint("Debug messages...", to: &errStream) // "Debug messages..." 
print("Debug messages...", to: &errStream)  // Debug messages... 
関連する問題