スマホHack!

twitter/ios-twitter-ログ-サービス

スマホ関連の海外ニュースです。

Twitter は次の要件を満たすためにログするためのフレームワークを作成: Twitter 使用されている Twitter ログ サービス 2014 年 1 月以降の変更が最小限。我々 は、開発者コミュニティと共有することに決めました。 次の高品質およびよく維持されたプロジェクトを含む利用可能な多くの偉大なロギング フレームワークがありますログ サービスの Twitter は、お客様のニーズを満たしていない場合、: 考慮する 3 つのコンポーネントがあります: 1。 ログ メッセージとコンテキスト 2。ログ サービスのシングルトン 3。出力ストリーム ログ メッセージは、各出力ストリームにメッセージを提供するロギング サービスに送信されます。 ログ サービスを設定するには、ディスクリート出力ストリームを追加します。出力ストリームは、自分の行動と意思決定、フィルター、メッセージのロギングなどをカプセル化します。たとえば、ログ出力 NSLog、ディスク上のファイルへの書き込みやメッセージをリモート サーバーに送信するとコンソールに印刷を意味します。 メッセージの引数を防ぐフィルター処理されるメッセージの場合評価する機会があります。これは、引数の評価の高価な同期の実行を回避できます。メッセージは、ログ レベル、ログ チャネルとファイル、関数、およびロギング サービスに送信される前に、それはから起きたラインなどのコンテキストでパッケージされています。 ログ サービスは、メッセージとすべての使用可能な出力ストリームによる処理のバック グラウンド キューにそのコンテキストにマーシャ リングします。ストリームは、フィルター処理、またはメッセージを出力できます。 TwitterLoggingService を使用してプリンシパルのヘッダーです。インクルードするだけや。 マクロの家族ごとに、最初に呼び出すゲートに実際のログが発生するかどうかこれは、ログ メッセージに引数を評価することから私たちを保存、マクロの呼び出しはログに記録されるまで終わらない場合、パフォーマンスで勝利を提供できます。については下記参照。 コア マクロは、3 つのパラメーターを取ります: レベル、チャネルおよび変数の引数のフォーマット形式。レベルとチャネルのパラメーターは、シングルトンのごとのログ メッセージをフィルター処理する使用されます。任意のログ マクロにチャネル引数として提供する関数またはメソッドになりますログに記録されないメッセージ。 ログ メッセージのロギング チャンネルは任意の文字列に関連するメッセージを識別するためにそのメッセージにタグとして機能します。チャンネルはフィルタ リング機構し同様、ログ メッセージではこれを大きなコード ベースの関係をすばやく特定するのに役立ちます。できますログ チャネルに基づいてフィルターの実装に基づいています。そのメッセージをログ記録されなかった効果がありますログ ステートメントにチャネルを提供します。 潜在的なロギング チャンネルの例: @「ネットワーク」ネットワーク スタックに。@ アプリの登録フローの「サインアップ」。キャッチとしてすべて既定ログ チャネルであります。@”Verbose”、helluvit にログインしたい何のため。 列挙型は、ログを syslog 仕様に従って 8 のログ出力レベルを指定します。実用、ただし、のみ 4 つのログ レベルが使用されます:。各ログ メッセージには役立ちますが、そのレベルをすばやく識別指定されたログ レベル (または実際に) 中に最も大切なは、少なくとも。s は、実装することによって (そのログ チャネルとコンテキスト オブジェクトとの組み合わせ) でそのログ レベルによってログ メッセージをフィルタ リングできます。 心 w.r.t. ロギング レベルで保つために実装の詳細、つまり常に非ビルドから除外。 マクロは、コンテキスト オブジェクトを公開しないでください、1 つ、そのカスタム s に追加のコンテキストを提供するために Api をコンテキスト オブジェクトを提供します。コンテキスト オブジェクトを介して実行されます、ようにことができますフィルターに渡されるオブジェクトにそれ以来メッセージのログで追加情報のコンテキスト オブジェクトを運ぶ使用と同様のコンテキスト オブジェクトに基づきます。 このコンテキスト オブジェクトは、フィルタ リングやログのログ出力レベルとログ チャネルに基づいて基本を超えてフレームワークに無限の拡張性ほぼ提供されます。 TwitterLoggingService を使用するプロジェクトの設定: 1) TwitterLoggingService XCode プロジェクトを XCode プロジェクトのサブプロジェクトとして追加します。 2) XCode プロジェクト依存関係として libTwitterLoggingService.a ライブラリや TwitterLoggingService.framework のフレームワークを追加します。 3) デバッグと TwitterLoggingService のプロジェクトをビルドするプロジェクトを設定、ビルドのリリースで。 4) セットアップ アプリケーション起動時にシングルトン (頻繁のあなたの iOS のデリゲート)。 ベスト プラクティスとしてこれらの単純なガイドラインに従ってください: 1) メッセージ (保存するネットワーク経由で送信されるを含む) を永続化ストリームを出力する任意のユーザーの機密情報を記録しないでください。あなたを構成することができますこれらの敏感なチャンネルにログをフィルター処理する出力ストリーム。逆は何もログに記録する特定の「安全な」チャンネルにのみ許可しています。Twitter は、パターンを使用して、永続化ストリームを出力する (コンテキスト オブジェクトによって指定) 明示的「安全な」メッセージだけが記録される場所を選出しました。疑問がある、ログ レベルをログに記録できます、これが今までに記録されますが作成されます。 2) のようなコンソール出力を持っているビルドを構成または 1 だけを追加またはデバッグ コンソールをスパムします。 3) コンソールの出力ストリームを使用してビルドを構成します。 4) プロジェクトに追加し、追加のサブクラスを使用する代わりに、または。必要がありますサブクラス。 アプリケーションに基づいてチャネルを取得します。これは、デフォルトのチャネルとして使用できます。 読み込み、降順の優先順位の順にチャンネル名をキャッシュ: デフォルトのチャネルは簡単なログの便宜のために利用できます。ただし、お勧めする常に具体的、明確に定義された出力が、チャンネルをログ記録している (例えば「ネットワー キング」、”UI”、「モデル」、「キャッシュ」, ら)。 TLSLog ヘルパー関数の数は、彼らはすべてを最初のパラメーターとして受け取るな。このパラメーターを指定した場合、共有されます。すべてのマクロを使用して、しかし、別のインスタンスを使用する場合、これらのヘルパー関数をサポートします。例として、Twitter は拡張され TwitterLoggingService マクロのセットで、コンテキストは、メッセージを安全に保持できる期間を定義する (例: 機密情報を保持しないようにする)、これらのヘルパー関数を呼び出すカスタム マクロを使用して。 現時点で評価 2 つ (contextObject は現在無視されます): キャッシュされたログ レベルとキャッシュされた許可されていないログ チャネルを許可されています。ログ メッセージが特定の目的のログに記録できますに基づいて知られている許可された s の内部キャッシュが許可されるレベルの特定のログ チャネルは常にオフにチャネル (するが、動作が異なるため以下を参照) のために知られていたとしてキャッシュされていないと。
続きを読む…

twitter/ios-twitter-logging-service

Twitter created a framework for logging in order to fulfill the following requirements: Twitter has been using Twitter Logging Service since January 2014 with minimal changes. We’ve decided to share it with the developer community. If Twitter Logging Service doesn’t meet your needs, there are many great logging frameworks available, including the following high quality and well maintained projects: There are 3 components to consider: 1. the log message and its context 2. the logging service singleton 3.
Read more…

facebooktwittergoogle_plusredditpinterestlinkedinmail

Comments are closed.