From 189d4b607cc523979958dbc79dc22d3274f96ad4 Mon Sep 17 00:00:00 2001 From: Koichi Yokota Date: Fri, 7 Oct 2022 00:55:17 +0900 Subject: [PATCH] Remove the argument named `asynchronous` --- CHANGELOG.md | 1 + Sources/Puppy/BaseLogger.swift | 30 +++++++++-------------- Sources/Puppy/FileLogger.swift | 8 +++--- Sources/Puppy/OSLogger.swift | 2 +- Tests/PuppyTests/BaseLoggerTests.swift | 34 +++----------------------- 5 files changed, 21 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6d6a84..c717887 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - Update to Xcode 14.0.1 and Swift 5.6 or later. [#56](https://github.com/sushichop/Puppy/pull/56) - Still use Xcode 13.4.1 for executing `pod lib lint`. [#57](https://github.com/sushichop/Puppy/pull/57) - Remove a property of type FileHandle. [#58](https://github.com/sushichop/Puppy/pull/58) +- Remove the argument named `asynchronous`. [#59](https://github.com/sushichop/Puppy/pull/59) ## [0.5.1](https://github.com/sushichop/Puppy/releases/tag/0.5.1) (2022-09-24) diff --git a/Sources/Puppy/BaseLogger.swift b/Sources/Puppy/BaseLogger.swift index 8addf0b..860bf9f 100644 --- a/Sources/Puppy/BaseLogger.swift +++ b/Sources/Puppy/BaseLogger.swift @@ -2,17 +2,17 @@ import Foundation public protocol Loggerable: Hashable { var label: String { get } - var queue: DispatchQueue? { get } + var queue: DispatchQueue { get } func log(_ level: LogLevel, string: String) } -extension Loggerable { - public func hash(into hasher: inout Hasher) { +public extension Loggerable { + func hash(into hasher: inout Hasher) { hasher.combine(label) } - public static func == (lhs: Self, rhs: Self) -> Bool { + static func == (lhs: Self, rhs: Self) -> Bool { return lhs.label == rhs.label } } @@ -31,27 +31,21 @@ open class BaseLogger: Loggerable { func formatMessage(_ level: LogLevel, message: String, tag: String, function: String, file: String, line: UInt, swiftLogInfo: [String: String], label: String, date: Date, threadID: UInt64) { if !enabled { return } - var tmpFormattedMessage = message - if let format = format { - tmpFormattedMessage = format.formatMessage(level, message: message, tag: tag, function: function, file: file, line: line, swiftLogInfo: swiftLogInfo, label: label, date: date, threadID: threadID) - } - - let formattedMessage = tmpFormattedMessage - if let queue = queue { - queue.async { - self.log(level, string: formattedMessage) + queue.async { + var formattedMessage = message + if let format = self.format { + formattedMessage = format.formatMessage(level, message: message, tag: tag, function: function, file: file, line: line, swiftLogInfo: swiftLogInfo, label: label, date: date, threadID: threadID) } - } else { - log(level, string: formattedMessage) + self.log(level, string: formattedMessage) } } public let label: String - public let queue: DispatchQueue? + public let queue: DispatchQueue - public init(_ label: String, asynchronous: Bool = true) { + public init(_ label: String) { self.label = label - self.queue = asynchronous ? DispatchQueue(label: label) : nil + self.queue = DispatchQueue(label: label) } /// Needs to override this method in the inherited class. diff --git a/Sources/Puppy/FileLogger.swift b/Sources/Puppy/FileLogger.swift index f259860..1255ba4 100644 --- a/Sources/Puppy/FileLogger.swift +++ b/Sources/Puppy/FileLogger.swift @@ -50,7 +50,7 @@ public class FileLogger: BaseLogger { } public func delete(_ url: URL) -> Result { - queue!.sync { + queue.sync { Result { try FileManager.default.removeItem(at: url) } .map { url } .mapError { _ in @@ -60,7 +60,7 @@ public class FileLogger: BaseLogger { } public func delete(_ url: URL, completion: @escaping (Result) -> Void) { - queue!.async { + queue.async { let result = Result { try FileManager.default.removeItem(at: url) } .map { url } .mapError { _ in @@ -71,7 +71,7 @@ public class FileLogger: BaseLogger { } public func flush(_ url: URL) { - queue!.sync { + queue.sync { let handle = try? FileHandle(forWritingTo: url) try? handle?.synchronize() try? handle?.close() @@ -79,7 +79,7 @@ public class FileLogger: BaseLogger { } public func flush(_ url: URL, completion: @escaping () -> Void) { - queue!.async { + queue.async { let handle = try? FileHandle(forWritingTo: url) try? handle?.synchronize() try? handle?.close() diff --git a/Sources/Puppy/OSLogger.swift b/Sources/Puppy/OSLogger.swift index b556534..f821214 100644 --- a/Sources/Puppy/OSLogger.swift +++ b/Sources/Puppy/OSLogger.swift @@ -8,7 +8,7 @@ public class OSLogger: BaseLogger { public init(_ label: String, asynchronous: Bool = true, category: String = "Puppy") { self.osLog = OSLog(subsystem: label, category: category) - super.init(label, asynchronous: asynchronous) + super.init(label) } public override func log(_ level: LogLevel, string: String) { diff --git a/Tests/PuppyTests/BaseLoggerTests.swift b/Tests/PuppyTests/BaseLoggerTests.swift index 3a3149c..3f30faa 100644 --- a/Tests/PuppyTests/BaseLoggerTests.swift +++ b/Tests/PuppyTests/BaseLoggerTests.swift @@ -27,36 +27,8 @@ final class BaseLoggerTests: XCTestCase { log.remove(baseLogger) } - func testMockLoggerSynchronous() throws { - let mockLogger = MockLogger("com.example.yourapp.mocklogger.sync", asynchronous: false) - XCTAssertNil(mockLogger.queue) - - let log = Puppy() - log.add(mockLogger, withLevel: .debug) - log.trace("TRACE message") - log.verbose("VERBOSE message") - log.debug("DEBUG message") - log.info("INFO message") - - mockLogger.enabled = false - log.notice("NOTICE message") - log.warning("WARNING message") - mockLogger.enabled = true - log.error("ERROR message") - log.critical("CRITICAL message") - - let expectedLogLevels: [LogLevel] = [.debug, .info, .error, .critical] - let expectedLogStrings: [String] = ["DEBUG message", "INFO message", "ERROR message", "CRITICAL message"] - XCTAssertEqual(mockLogger.invokedLogCount, 4) - XCTAssertEqual(mockLogger.invokedLogLevels, expectedLogLevels) - XCTAssertEqual(mockLogger.invokedLogStrings, expectedLogStrings) - - log.remove(mockLogger) - } - - func testMockLoggerAsynchronous() throws { + func testMockLogger() throws { let mockLogger = MockLogger("com.example.yourapp.mocklogger.async") - XCTAssertNotNil(mockLogger.queue) let log = Puppy() log.add(mockLogger, withLevel: .debug) @@ -64,7 +36,7 @@ final class BaseLoggerTests: XCTestCase { log.warning("WARNING message") let exp = XCTestExpectation(description: "MockLogger Asynchronous") - mockLogger.queue!.async { + mockLogger.queue.async { XCTAssertEqual(mockLogger.invokedLogCount, 2) XCTAssertEqual(mockLogger.invokedLogLevels, [.debug, .warning]) XCTAssertEqual(mockLogger.invokedLogStrings, ["DEBUG message", "WARNING message"]) @@ -87,7 +59,7 @@ final class BaseLoggerTests: XCTestCase { log.error("ERROR message", tag: "error-tag") let exp = XCTestExpectation(description: "MockLogger LogFormatter") - mockLogger.queue!.async { + mockLogger.queue.async { XCTAssertEqual(mockLogger.invokedLogCount, 2) XCTAssertEqual(mockLogger.invokedLogLevels, [.warning, .error]) XCTAssertEqual(mockLogger.invokedLogStrings, [