2016年9月号の特集のログ出力を読んでいて、iOSやmacOSでsyslogでどうなっていたかなぁと思ったので、確認しました。iOSやmacOSでもsyslog()関数を使ったログ出力が出来ます。APIを使う方法です。Warnings」の所に概要が載っています。APIの詳細はmanページを参照と書かれていました。書かれている中で目を引いたのは、ASLはスレッドセーフであることです。libdispatchのおかげで簡単にスレッドを作って、サブスレッドで処理を行わせることが出来るようになり、サブスレッドで動作していることを忘れがちです。気軽にログ出力を行ったら、それが原因で落ちてしまったなんてことになったら、目が当てられないです。NSLog関数はsyslogにも出力します。Swiftネイティブで同様の関数があったか検索してみると、そのものずばりは無いようですね。APIをSwiftから使えば良いようです。APIを使っていると、後々、変更するときに面倒になるのと、出力先や出力フォーマットを変更したいなども考えると、ラッパー関数を作って、それを使うのが良いのでは無いでしょうか。Swiftから使ってみるとりあえず、Swiftから使って見ます。Swiftから使うにはブリッジヘッダファイルを作って、ブリッジヘッダファイルで「asl.h」をインクルードします。C++やObjective-Cからは「asl_log_message」関数で手軽に出力できますが、Swiftからだと直接は呼べないようです。そのため、他の関数を使って実装します。次の例は、「log」という関数を実装しています。Test")ログレベルは「ASL_LEVEL_NOTICE」以上のレベル(数値としては以下ですが)を指定すると、コンソールにも表示されます。