Skip to content

Commit 30e51db

Browse files
committed
Add label in the logger
1 parent ab1872c commit 30e51db

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

Sources/JSONLogger.swift

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ public struct JSONLogger : LogHandler {
4444
}
4545
public var metadataProvider: Logger.MetadataProvider?
4646

47+
public let label: String
48+
4749
public let outputFileDescriptor: FileDescriptor
4850
public let lineSeparator: Data
4951
public let prefix: Data
@@ -54,11 +56,12 @@ public struct JSONLogger : LogHandler {
5456
If the encoding fails or this property is set to `false` the String value will be used. */
5557
public var tryEncodingStringConvertibles: Bool
5658

57-
public static func forJSONSeq(on fd: FileDescriptor = .standardError, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) -> Self {
58-
return Self(fd: fd, lineSeparator: Data(), prefix: Data([0x1e]), suffix: Data([0x0a]), metadataProvider: metadataProvider)
59+
public static func forJSONSeq(on fd: FileDescriptor = .standardError, label: String, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) -> Self {
60+
return Self(label: label, fd: fd, lineSeparator: Data(), prefix: Data([0x1e]), suffix: Data([0x0a]), metadataProvider: metadataProvider)
5961
}
6062

61-
public init(fd: FileDescriptor = .standardError, lineSeparator: Data = Data("\n".utf8), prefix: Data = Data(), suffix: Data = Data(), tryEncodingStringConvertibles: Bool = true, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) {
63+
public init(label: String, fd: FileDescriptor = .standardError, lineSeparator: Data = Data("\n".utf8), prefix: Data = Data(), suffix: Data = Data(), tryEncodingStringConvertibles: Bool = true, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) {
64+
self.label = label
6265
self.outputFileDescriptor = fd
6366
self.lineSeparator = lineSeparator
6467
self.prefix = prefix
@@ -80,7 +83,7 @@ public struct JSONLogger : LogHandler {
8083

8184
/* We compute the data to print outside of the lock. */
8285
let line = LogLine(level: level, message: message.description, metadata: effectiveJSONMetadata,
83-
source: source, file: file, function: function, line: line)
86+
label: label, source: source, file: file, function: function, line: line)
8487
let jsonLine: Data
8588
do {jsonLine = try JSONEncoder().encode(line)}
8689
catch {
@@ -94,6 +97,7 @@ public struct JSONLogger : LogHandler {
9497
#""JSONLogger.LogInfo":"Original metadata removed (see JSONLogger doc)","# +
9598
#""JSONLogger.LogError":"\#(String(describing: error).safifyForJSON())""# +
9699
#"},"# +
100+
#""label":"\#(label.safifyForJSON())","# +
97101
#""source":"\#(source.safifyForJSON())","# +
98102
#""file":"\#(file.safifyForJSON())","# +
99103
#""function":"\#(function.safifyForJSON())","# +

Sources/LogLine.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,17 @@ public struct LogLine : Hashable, Codable, Sendable {
1111
public var message: String
1212
public var metadata: JSON
1313

14+
public var label: String
1415
public var source: String
1516
public var file: String
1617
public var function: String
1718
public var line: UInt
1819

19-
public init(level: Logger.Level, message: String, metadata: JSON, source: String, file: String, function: String, line: UInt) {
20+
public init(level: Logger.Level, message: String, metadata: JSON, label: String, source: String, file: String, function: String, line: UInt) {
2021
self.level = level
2122
self.message = message
2223
self.metadata = metadata
24+
self.label = label
2325
self.source = source
2426
self.file = file
2527
self.function = function

Tests/JSONLoggerTests.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import Logging
88
final class JSONLoggerTests: XCTestCase {
99

1010
override class func setUp() {
11-
LoggingSystem.bootstrap{ _ in JSONLogger() }
11+
LoggingSystem.bootstrap{ JSONLogger(label: $0) }
1212
}
1313

1414
/* From <https://apple.github.io/swift-log/docs/current/Logging/Protocols/LogHandler.html#treat-log-level-amp-metadata-as-values>. */
@@ -27,5 +27,11 @@ final class JSONLoggerTests: XCTestCase {
2727
XCTAssertEqual("second", logger2[metadataKey: "only-on"])
2828
}
2929

30+
func testVisual1() {
31+
XCTAssertTrue(true, "We only want to see how the log look, so please see the logs.")
32+
33+
let logger = Logger(label: "my logger")
34+
logger.info("First log message using JSONLogger")
35+
}
3036

3137
}

0 commit comments

Comments
 (0)