web-dev-qa-db-ja.com

新しいSwift os_logapiを使用してログを読み取る

IOS 10.0で非推奨:os_log(3)がasl(3)に置き換わりました

そのため、iOS 10.0は明らかにasl(Apple System Log)APIを非推奨にし、非常に限定されたos_logapiに置き換えます。

以下のコードスニペットのようなものを使用して、実行中のアプリのログ書き込みを読み取り、アプリのuitextviewに表示します。これで非推奨の警告がいっぱいになります。新しいos_logapiを使用して印刷されたログを読み取る方法を知っている人はいますか?書き込み用のAPIしか表示されないため( https://developer.Apple.com/reference/os/1891852-logging )。

import asl

let query = asl_new(UInt32(ASL_TYPE_QUERY))
let response = asl_search(nil, query)
while let message = asl_next(response) {
    var i: UInt32 = 0
    let key = asl_key(message, i)
    print(asl_get(message, key))
    ...
}

@ WillLoew-Blosserの回答の後に編集

https://developer.Apple.com/videos/play/wwdc2016/721/ 将来のロギングで何が起こるかをうまく説明しました。最大の景品は、ログが圧縮形式で配置され、新しいコンソールアプリケーションによってのみ拡張されることでした。それは私の使命を絶望的にします。

ビデオの男(Steve Szymanski)は、「すべてのASLロギングAPIは新しいAPIに置き換えられています」、「新しいログデータを検索するための新しいAPIはこのリリースでは公開されません」と述べています。別名asl_search。そしてそれはまさに私が探していたものでした!

また、彼はSwift APIiが来ると述べています。

14
MartinR

独自のログビューアではなく、拡張コンソールを使用する必要があるようです。ログは圧縮され、表示されるまで展開されません。これにより、デバッグレベルでのログの煩わしさが大幅に軽減されます。ただし、ログのテキスト形式はありません。

2016WWDCビデオセッション721「UnifiedLoggingand ActivityTracing」を参照してください https://developer.Apple.com/videos/play/wwdc2016/721/

また、新しいアプローチをデモするAppleサンプルアプリには、iOSアプリに追加する必要のある文書化されていないビルド設定があります。「PaperCompany(Swift)」iOSアプリの設定を参照してください。設定は、トップレベルのxCodeウィンドウの[ターゲット]セクションにあります。以下の手順に従いました。

  1. [ビルド設定]ページで、[ユーザー定義]に新しいセクション= ASSETCATALOG_COMPRESSIONを追加します。

  2. その下に2行追加します。

デバッグ=ロスレス

リリース= respect-asset-catalog

このビルド設定を追加した後、ビデオセッションのデモに従って、ログがアプリで機能しました。

13