如何在框架中使用 XCGLogger

How to use XCGLogger in a framework

我想在我正在编写的 Swift 框架中使用 XCGLogger。包含此框架的应用程序可能也可能不使用 XCGLogger。

处理这种情况的最佳方法是什么?我会使用依赖注入之类的东西让应用程序将 XCGLogger 实例发送到框架吗?在框架的什么地方调用XCGLogger的setup方法?

安装 'XCGLogger' 和 pods

use_frameworks!

target '<YouAppName>' do
pod 'XCGLogger'

import XCGLogger 在`AppDelegate.swift'

application(_:didFinishLaunchingWithOptions:)中用

配置XCGLogger
    //Setting up XCGLogger shared instance ()
    XCGLogger.defaultInstance().setup(.Debug, showLogLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: nil, fileLogLevel: .Debug)

假设我想在我的 BLUserServicesCD.swift 中使用 XCGLogger。因此,import XCGLogger 在文件的顶部。 创建变量 private let Logger = XCGLogger.defaultInstance() 并使用

记录

Logger.info("USER DELETED SUCCESSFULLY")

Logger.error("COULD NOT DELETE USER \(error), \(error?.userInfo)")

也可以根据需要尝试使用以下这些有用的方法。

详情请参考GitHub Repository

我可以在项目和框架中使用相同的记录器,只需在两者中引用相同的 XCGLogger.defaultInstance()

首先,在导入中import XCGLogger,然后使用let log = XCGLogger.defaultInstance()实例化项目中的日志实例。

之后,我实例化了我正在使用的框架的 sharedInstance(根据我的特定用例)。

在框架内,import XCGLogger & 在我的 Class 声明之前实例化记录器 let log = XCGLogger.defaultInstance()

然后,回到 AppDelegate.swiftdidFinishLaunchingWithOptions,我做了 log.setup(...your params...)

在您编写框架的情况下,如果没有按照您喜欢的方式设置记录器,您将需要一些逻辑和自述文件来设置记录器。

可能不是完成它的最优雅的方法,但它确实有效。

希望对您有所帮助。