私が書いている Swift フレームワーク内で XCGLogger を使用したいと考えています。このフレームワークを含むアプリは、XCGLogger も使用する場合と使用しない場合があります。
この種のシナリオにアプローチする最善の方法は何ですか? 依存性注入のようなものを使用して、アプリが XCGLogger インスタンスをフレームワークに送信できるようにしますか? フレームワークのどこで XCGLogger の setup メソッドを呼び出すでしょうか?
XCGLogger.defaultInstance()
プロジェクトとフレームワークの両方で同じロガーを参照するだけで、同じロガーを使用できます。
まず、import XCGLogger
インポートで、次に を使用してプロジェクトでログ インスタンスをインスタンス化しますlet log = XCGLogger.defaultInstance()
。
その後、sharedInstance
使用しているフレームワークの をインスタンス化します (特定のユース ケースごとに)。
フレームワーク内で、宣言 の前にimport XCGLogger
ロガーをインスタンス化します。let log = XCGLogger.defaultInstance()
Class
次に、 に戻ってdidFinishLaunchingWithOptions
、AppDelegate.swift
を実行しlog.setup(...your params...)
ます。
フレームワークを作成する場合、ロガーが希望どおりに設定されていない場合にロガーを設定するためのロジックと readme ノートが必要になります。
おそらく最もエレガントな方法ではありませんが、うまくいきます。
それが役立つことを願っています。
「XCGLogger」をインストールしますpods
use_frameworks!
target '<YouAppName>' do
pod 'XCGLogger'
import XCGLogger
「AppDelegate.swift」内
XCGLoggerapplication(_:didFinishLaunchingWithOptions:)
の構成で
//Setting up XCGLogger shared instance ()
XCGLogger.defaultInstance().setup(.Debug, showLogLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: nil, fileLogLevel: .Debug)
XCGLogger
で使用したいとしますBLUserServicesCD.swift
。したがって、import XCGLogger
ファイルの先頭に. を使用して変数private let Logger = XCGLogger.defaultInstance()
とログを作成します
Logger.info("USER DELETED SUCCESSFULLY")
また
Logger.error("COULD NOT DELETE USER \(error), \(error?.userInfo)")
また、必要に応じて次の便利なメソッドを使用してみてください。
詳細については、GitHub リポジトリを参照してください。