Skip to content

Commit 0fe9b2c

Browse files
committed
Fix debug logging
1 parent a985ced commit 0fe9b2c

File tree

1 file changed

+47
-11
lines changed

1 file changed

+47
-11
lines changed
Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,48 @@
1+
import Foundation
12
import os
23

34
public enum HTTPMockLog {
45
public static var logger = Logger(subsystem: "httpmock", category: "HTTPMock")
56
public static var isEnabled = true
6-
public static var level: Level = .info
7+
public static var level: Level = .trace
78

8-
public static func error(_ message: String) {
9+
public static func error(_ message: @autoclosure () -> String) {
910
if should(.error) {
10-
logger.error("[HTTPMock] \(message, privacy: .public)")
11+
let message = message()
12+
logger.error("[HTTPMock][\(level.description)] \(message, privacy: .public)")
13+
printToConsole("⛔️ \(message)", level: .error)
1114
}
1215
}
1316

14-
public static func warning(_ message: String) {
17+
public static func warning(_ message: @autoclosure () -> String) {
1518
if should(.warning) {
16-
logger.warning("[HTTPMock] \(message, privacy: .public)")
19+
let message = message()
20+
logger.warning("[HTTPMock][\(level.description)] \(message, privacy: .public)")
21+
printToConsole("⚠️ \(message)", level: .warning)
1722
}
1823
}
1924

20-
public static func info(_ message: String) {
25+
public static func info(_ message: @autoclosure () -> String) {
2126
if should(.info) {
22-
logger.info("[HTTPMock] \(message, privacy: .public)")
27+
let message = message()
28+
logger.info("[HTTPMock][\(level.description)] \(message, privacy: .public)")
29+
printToConsole(message, level: .info)
2330
}
2431
}
2532

26-
public static func debug(_ message: String) {
33+
public static func debug(_ message: @autoclosure () -> String) {
2734
if should(.debug) {
28-
logger.debug("[HTTPMock] \(message, privacy: .public)")
35+
let message = message()
36+
logger.debug("[HTTPMock][\(level.description)] \(message, privacy: .public)")
37+
printToConsole(message, level: .debug)
2938
}
3039
}
3140

32-
public static func trace(_ message: String) {
41+
public static func trace(_ message: @autoclosure () -> String) {
3342
if should(.trace) {
34-
logger.log("[HTTPMock] \(message, privacy: .public)")
43+
let message = message()
44+
logger.log("[HTTPMock][\(level.description)] \(message, privacy: .public)")
45+
printToConsole(message, level: .trace)
3546
}
3647
}
3748

@@ -41,6 +52,21 @@ public enum HTTPMockLog {
4152
private static func should(_ l: Level) -> Bool {
4253
isEnabled && l.rawValue <= level.rawValue
4354
}
55+
56+
@inline(__always)
57+
private static var isXcodePreview: Bool {
58+
ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1"
59+
}
60+
61+
private static func printToConsole(_ message: String, level: Level) {
62+
#if DEBUG
63+
Swift.print("[HTTPMock][\(level.description)] \(message)")
64+
#else
65+
if isXcodePreview {
66+
Swift.print("[HTTPMock][\(level.description)] \(message)")
67+
}
68+
#endif
69+
}
4470
}
4571

4672
extension HTTPMockLog {
@@ -50,5 +76,15 @@ extension HTTPMockLog {
5076
case info
5177
case debug
5278
case trace
79+
80+
var description: String {
81+
switch self {
82+
case .error: "ERROR"
83+
case .warning: "WARNING"
84+
case .info: "INFO"
85+
case .debug: "DEBUG"
86+
case .trace: "TRACE"
87+
}
88+
}
5389
}
5490
}

0 commit comments

Comments
 (0)