diff --git a/README.md b/README.md index e55f7c9..7a26b16 100644 --- a/README.md +++ b/README.md @@ -234,6 +234,11 @@ The `debugEnabled` configuration is useful for testing how your review prompt po GETTER: Armchair.debugEnabled() -> Bool SETTER: Armchair.debugEnabled(debugEnabled: Bool) +##### Logging + Armchair allows you to set a closure to capture debug log and to plug in the desired logging framework. + + Armchair.logger(logger: ArmchairLogger) + ##### iOS Only Configuration These configuration functions only make sense for iOS builds due to their dependency on iOS-only frameworks and functions. diff --git a/Source/Armchair.swift b/Source/Armchair.swift index d79024f..93631f5 100644 --- a/Source/Armchair.swift +++ b/Source/Armchair.swift @@ -563,6 +563,18 @@ public func shouldIncrementUseCountClosure(shouldIncrementUseCountClosure: Armch Manager.defaultManager.shouldIncrementUseCountClosure = shouldIncrementUseCountClosure } + + +// MARK: Armchair Logger Protocol +public typealias ArmchairLogger = (Manager, log: String, file: StaticString, function: StaticString, line: UInt) -> Void + +/* +* Set a closure to capture debug log and to plug in the desired logging framework. +*/ +public func logger(logger: ArmchairLogger) { + Manager.defaultManager.logger = logger +} + // MARK: - // MARK: Armchair Defaults Protocol @@ -1717,11 +1729,15 @@ public class Manager : ArmchairManager { let lockQueue = dispatch_queue_create("com.armchair.lockqueue", nil) - private func debugLog(log: String) { - if debugEnabled { - dispatch_sync(lockQueue, { + public var logger: ArmchairLogger = { manager, log, file, function, line in + if manager.debugEnabled { + dispatch_sync(manager.lockQueue, { print("[Armchair] \(log)") }) } } + private func debugLog(log: String, file: StaticString = __FILE__, function: StaticString = __FUNCTION__, line: UInt = __LINE__) { + logger(self, log: log, file: file, function: function, line: line) + } + }