From 7a76f714c4b96d31eb7b9997ef063e569768601d Mon Sep 17 00:00:00 2001 From: phimage Date: Tue, 15 Dec 2015 05:49:41 +0100 Subject: [PATCH 1/2] Allow to capture log using closure --- Source/Armchair.swift | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Source/Armchair.swift b/Source/Armchair.swift index eafb212..13ddc23 100644 --- a/Source/Armchair.swift +++ b/Source/Armchair.swift @@ -1715,13 +1715,19 @@ public class Manager : ArmchairManager { // MARK: - // MARK: Debug + public typealias ArmchairLogger = (Manager, log: String, file: StaticString, function: StaticString, line: UInt) -> Void + 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) + } + } From 304380a9acb16555c03ef1952a24d62c46c50ed9 Mon Sep 17 00:00:00 2001 From: phimage Date: Tue, 15 Dec 2015 16:05:24 +0100 Subject: [PATCH 2/2] Add global method to set logger closure Add information into README.md --- README.md | 5 +++++ Source/Armchair.swift | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a6cc15e..681658b 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 13ddc23..6ce660b 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 @@ -1715,8 +1727,6 @@ public class Manager : ArmchairManager { // MARK: - // MARK: Debug - public typealias ArmchairLogger = (Manager, log: String, file: StaticString, function: StaticString, line: UInt) -> Void - let lockQueue = dispatch_queue_create("com.armchair.lockqueue", nil) public var logger: ArmchairLogger = { manager, log, file, function, line in