Skip to content

Commit e33c775

Browse files
committed
Add log level field to formatters
1 parent 69f89ef commit e33c775

File tree

8 files changed

+42
-42
lines changed

8 files changed

+42
-42
lines changed

Sources/Cosmic/Base/LogFormatter.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Foundation
1010

1111
public protocol LogFormatter {
1212

13-
func format(message: String, metadata: LogMetadata) -> String
13+
func format(message: String, logLevel: LogLevel, metadata: LogMetadata) -> String
1414

1515
}
1616

@@ -36,7 +36,7 @@ open class BasicLogFormatter: LogFormatter {
3636
return "[\(metadata.filename)\(metadata.function):\(metadata.line)] "
3737
}
3838

39-
public func format(message: String, metadata: LogMetadata) -> String {
39+
public func format(message: String, logLevel: LogLevel, metadata: LogMetadata) -> String {
4040
return "\(prefix(for: metadata))\(prefix)\(message)\(suffix)"
4141
}
4242
}
@@ -48,11 +48,11 @@ open class DateLogFormatter: BasicLogFormatter {
4848

4949
let dateFormatter = DateFormatter()
5050

51-
override public func format(message: String, metadata: LogMetadata) -> String {
51+
override public func format(message: String, logLevel: LogLevel, metadata: LogMetadata) -> String {
5252
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
5353
let date = dateFormatter.string(from: Date())
5454
self.prefix = date
55-
return super.format(message: " \(message)", metadata: metadata)
55+
return super.format(message: " \(message)", logLevel: logLevel, metadata: metadata)
5656
}
5757

5858
}
@@ -61,20 +61,20 @@ open class DateLogFormatter: BasicLogFormatter {
6161

6262
public protocol BatchFormatter: LogFormatter {
6363

64-
func format (batch: [(String, LogMetadata)]) -> String
64+
func format (batch: [(String, LogLevel, LogMetadata)]) -> String
6565

6666
}
6767

6868
// MARK: NewLineBatchFormatter
6969

7070
public class NewLineBatchFormatter: BatchFormatter {
7171

72-
public func format(message: String, metadata: LogMetadata) -> String {
72+
public func format(message: String, logLevel: LogLevel, metadata: LogMetadata) -> String {
7373
return message
7474
}
7575

76-
public func format(batch: [(String, LogMetadata)]) -> String {
77-
return batch.map({ format(message: $0.0, metadata: $0.1) }).joined(separator: "\n")
76+
public func format(batch: [(String, LogLevel, LogMetadata)]) -> String {
77+
return batch.map({ format(message: $0.0, logLevel: $0.1, metadata: $0.2) }).joined(separator: "\n")
7878
}
7979

8080
}

Sources/Cosmic/Base/Logger.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public extension Logger {
9292
func debug(_ message: String, file: StaticString = #file, line: UInt = #line, function: StaticString = #function) {
9393
guard enabled(.debug) else { return }
9494
let metadata = LogMetadata(file: file, line: line, function: function)
95-
log(format(message, metadata), logLevel: .debug, metadata: metadata)
95+
log(format(message, .debug, metadata), logLevel: .debug, metadata: metadata)
9696
}
9797

9898
// MARK: info
@@ -109,7 +109,7 @@ public extension Logger {
109109
func info(_ message: String, file: StaticString = #file, line: UInt = #line, function: StaticString = #function) {
110110
guard enabled(.info) else { return }
111111
let metadata = LogMetadata(file: file, line: line, function: function)
112-
log(format(message, metadata), logLevel: .info, metadata: metadata)
112+
log(format(message, .info, metadata), logLevel: .info, metadata: metadata)
113113
}
114114

115115
// MARK: warn
@@ -123,7 +123,7 @@ public extension Logger {
123123
func warn(_ message: String, file: StaticString = #file, line: UInt = #line, function: StaticString = #function) {
124124
guard enabled(.warn) else { return }
125125
let metadata = LogMetadata(file: file, line: line, function: function)
126-
log(format(message, metadata), logLevel: .warn, metadata: metadata)
126+
log(format(message, .warn, metadata), logLevel: .warn, metadata: metadata)
127127
}
128128

129129
// MARK: error
@@ -141,10 +141,10 @@ public extension Logger {
141141
func error(_ message: String, file: StaticString = #file, line: UInt = #line, function: StaticString = #function) {
142142
guard enabled(.error) else { return }
143143
let metadata = LogMetadata(file: file, line: line, function: function)
144-
log(format(message, metadata), logLevel: .error, metadata: metadata)
144+
log(format(message, .error, metadata), logLevel: .error, metadata: metadata)
145145
}
146146

147-
internal func format(_ message: String, _ metadata: LogMetadata) -> String {
148-
return formatters.reduce(message, { $1.format(message: $0, metadata: metadata) })
147+
internal func format(_ message: String, _ logLevel: LogLevel, _ metadata: LogMetadata) -> String {
148+
return formatters.reduce(message, { $1.format(message: $0, logLevel: logLevel, metadata: metadata) })
149149
}
150150
}

Sources/Cosmic/Formatters/CompletionFormatter.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import Foundation
1010

11-
public typealias LambdaFormatterCompletion = (String, LogMetadata) -> (String)
11+
public typealias LambdaFormatterCompletion = (String, LogLevel, LogMetadata) -> (String)
1212

1313
public class LambdaFormatter: LogFormatter {
1414

@@ -18,8 +18,8 @@ public class LambdaFormatter: LogFormatter {
1818
self.completion = completion
1919
}
2020

21-
public func format(message: String, metadata: LogMetadata) -> String {
22-
return completion(message, metadata)
21+
public func format(message: String, logLevel: LogLevel, metadata: LogMetadata) -> String {
22+
return completion(message, logLevel, metadata)
2323
}
2424

2525
}

Sources/Cosmic/Formatters/JSONFormatter.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class JSONFormatter: LogFormatter, JSONFormatterConverter {
4444
return JSONSerialization.string(withJSONObject: dict, options: options)
4545
}
4646

47-
func format(message: String, metadata: LogMetadata) -> String {
47+
func format(message: String, logLevel: LogLevel, metadata: LogMetadata) -> String {
4848
guard let string = toJSON(message: message, metadata: metadata) else { return message }
4949
return string
5050
}
@@ -62,12 +62,12 @@ public class JSONBatchFormatter: BatchFormatter {
6262
jsonFormatter = JSONFormatter(converter: converter)
6363
}
6464

65-
public func format(message: String, metadata: LogMetadata) -> String {
66-
return jsonFormatter.format(message: message, metadata: metadata)
65+
public func format(message: String, logLevel: LogLevel, metadata: LogMetadata) -> String {
66+
return jsonFormatter.format(message: message, logLevel: logLevel, metadata: metadata)
6767
}
6868

69-
public func format(batch: [(String, LogMetadata)]) -> String {
70-
return batch.map({ format(message: $0.0, metadata: $0.1) }).joined(separator: "\n")
69+
public func format(batch: [(String, LogLevel, LogMetadata)]) -> String {
70+
return batch.map({ format(message: $0.0, logLevel: $0.1, metadata: $0.2) }).joined(separator: "\n")
7171
}
7272

7373
}

Sources/Cosmic/Formatters/SyslogFormatter.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class SyslogFormatter: LogFormatter {
3030
/// a name describing the calling application or service
3131
var sender: String = Bundle.main.bundleIdentifier ?? "Unknown"
3232

33-
func format(message: String, metadata: LogMetadata) -> String {
33+
func format(message: String, logLevel: LogLevel, metadata: LogMetadata) -> String {
3434
let timestamp = Date().iso8601
3535
return "\(SyslogHeader) \(timestamp) \(SyslogSenderName) \(sender) - - - \(message)"
3636
}

Sources/Cosmic/Loggers/HTTPLogger.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public class HTTPLogger: Logger {
6262

6363
internal var config: HTTPLoggerConfig?
6464
// TODO: use LogCacheEntry
65-
internal var cache: [(String, LogMetadata)] = []
65+
internal var cache: [(String, LogLevel, LogMetadata)] = []
6666

6767
required public init() {
6868
let queue = OperationQueue()
@@ -77,7 +77,7 @@ public class HTTPLogger: Logger {
7777
}
7878

7979
public func log(_ message: String, logLevel: LogLevel, metadata: LogMetadata) {
80-
cache.append((message, metadata))
80+
cache.append((message, logLevel, metadata))
8181
attemptSend()
8282
}
8383

Tests/CosmicTests/FormatterTests.swift

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class FormatterTests: XCTestCase {
2727

2828
let formatter = BasicLogFormatter()
2929

30-
let string = formatter.format(message: "a", metadata: LogMetadata()); let line = #line
30+
let string = formatter.format(message: "a", logLevel: .info, metadata: LogMetadata()); let line = #line
3131

3232
XCTAssertEqual(string, "[FormatterTests.swift → testBasicLogFormatter():\(line)] a")
3333
}
@@ -36,7 +36,7 @@ class FormatterTests: XCTestCase {
3636

3737
let formatter = BasicLogFormatter(prefix: "a", suffix: "c")
3838

39-
let string = formatter.format(message: "b", metadata: LogMetadata()); let line = #line
39+
let string = formatter.format(message: "b", logLevel: .info, metadata: LogMetadata()); let line = #line
4040

4141
XCTAssertEqual(string, "[FormatterTests.swift → testBasicLogFormatterWithPrefixAndSuffix():\(line)] abc")
4242

@@ -46,7 +46,7 @@ class FormatterTests: XCTestCase {
4646

4747
let formatter = SyslogFormatter()
4848

49-
let formattedMessage = formatter.format(message: "Testing", metadata: LogMetadata())
49+
let formattedMessage = formatter.format(message: "Testing", logLevel: .info, metadata: LogMetadata())
5050

5151
XCTAssertMatches(input: formattedMessage, pattern: "<\\d{2}>\\d \(dateTimeExpr) Cosmic com.apple.dt.xctest.tool - - - Testing")
5252
}
@@ -61,7 +61,7 @@ class FormatterTests: XCTestCase {
6161
]
6262
}
6363

64-
let formattedMessage = formatter.format(message: "Test", metadata: LogMetadata())
64+
let formattedMessage = formatter.format(message: "Test", logLevel: .info, metadata: LogMetadata())
6565

6666
let expectedMessage = "{\"id\":\"123\",\"message\":\"Test\",\"tag\":\"my tag\"}"
6767

@@ -80,32 +80,32 @@ class FormatterTests: XCTestCase {
8080
]
8181
}
8282

83-
let message1 = formatter.format(message: "Message #1", metadata: LogMetadata())
83+
let message1 = formatter.format(message: "Message #1", logLevel: .info, metadata: LogMetadata())
8484
XCTAssertEqual(message1, "{\"id\":1,\"message\":\"Message #1\"}")
8585

86-
let message2 = formatter.format(message: "Message #2", metadata: LogMetadata())
86+
let message2 = formatter.format(message: "Message #2", logLevel: .info, metadata: LogMetadata())
8787
XCTAssertEqual(message2, "{\"id\":2,\"message\":\"Message #2\"}")
8888

89-
let message3 = formatter.format(message: "Message #3", metadata: LogMetadata())
89+
let message3 = formatter.format(message: "Message #3", logLevel: .info, metadata: LogMetadata())
9090
XCTAssertEqual(message3, "{\"id\":3,\"message\":\"Message #3\"}")
9191

9292
}
9393

9494
func testBlockFormatter() {
9595

96-
let blockFormatter = LambdaFormatter { message, _ in
96+
let blockFormatter = LambdaFormatter { message, _, _ in
9797
return "« \(message) »"
9898
}
9999

100-
let formattedMessage = blockFormatter.format(message: "Test", metadata: LogMetadata())
100+
let formattedMessage = blockFormatter.format(message: "Test", logLevel: .info, metadata: LogMetadata())
101101

102102
XCTAssertEqual("« Test »", formattedMessage)
103103
}
104104

105105
func testDateFormatter() {
106106
let dateFormatter = DateLogFormatter()
107107

108-
let formattedMessage = dateFormatter.format(message: "Test", metadata: LogMetadata()); let line = #line
108+
let formattedMessage = dateFormatter.format(message: "Test", logLevel: .info, metadata: LogMetadata()); let line = #line
109109

110110
// TODO
111111
XCTAssertMatches(input: formattedMessage, pattern: "\\[FormatterTests\\.swift → testDateFormatter\\(\\):\(line)\\] \(dateTimeExpr) Test")
@@ -118,9 +118,9 @@ class FormatterTests: XCTestCase {
118118
let batchFormatter = NewLineBatchFormatter()
119119

120120
let formattedMessage = batchFormatter.format(batch: [
121-
("Test1", LogMetadata()),
122-
("Test2", LogMetadata()),
123-
("Test3", LogMetadata())
121+
("Test1", .info, LogMetadata()),
122+
("Test2", .info, LogMetadata()),
123+
("Test3", .info, LogMetadata())
124124
])
125125

126126
XCTAssertEqual("Test1\nTest2\nTest3", formattedMessage)
@@ -136,9 +136,9 @@ class FormatterTests: XCTestCase {
136136
}
137137

138138
let formattedMessage = batchFormatter.format(batch: [
139-
("Test1", LogMetadata()),
140-
("Test2", LogMetadata()),
141-
("Test3", LogMetadata())
139+
("Test1", .info, LogMetadata()),
140+
("Test2", .info, LogMetadata()),
141+
("Test3", .info, LogMetadata())
142142
])
143143

144144
let template: (String) -> String = { "{\"message\":\"\($0)\"}" }

Tests/CosmicTests/ServiceLoggerTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class ServiceLoggerTests: XCTestCase {
7373
XCTAssertEqual(logger.config?.method, LogglyServiceConfig.method)
7474
XCTAssertEqual(logger.config?.headers[HTTPHeader.ContentType], HTTPHeader.ContentTypeJSON)
7575

76-
let formattedString = logger.batchFormatter.format(message: "Test", metadata: LogMetadata())
76+
let formattedString = logger.batchFormatter.format(message: "Test", logLevel: .info, metadata: LogMetadata())
7777
XCTAssertNotNil(formattedString)
7878

7979
let json = try! JSONSerialization.jsonObject(with: formattedString.data(using: .utf8)!, options: []) as! [String: String]

0 commit comments

Comments
 (0)