Merge pull request #35 from phimage/feature-capturelog

Allow to capture log using closure
This commit is contained in:
Matt Coneybeare
2015-12-15 10:13:11 -05:00
2 changed files with 24 additions and 3 deletions

View File

@@ -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.

View File

@@ -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)
}
}