Skip to content

Commit 3e3ef75

Browse files
slashmoktoso
andauthored
Emit correct metadata from StreamLogHandler (apple#251)
Co-authored-by: Konrad `ktoso` Malawski <[email protected]>
1 parent bd4519f commit 3e3ef75

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

Sources/Logging/Logging.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1297,7 +1297,7 @@ public struct StreamLogHandler: LogHandler {
12971297
metadata.merge(explicit, uniquingKeysWith: { _, explicit in explicit })
12981298
}
12991299

1300-
return explicit
1300+
return metadata
13011301
}
13021302

13031303
private func prettify(_ metadata: Logger.Metadata) -> String? {

Tests/LoggingTests/LoggingTest+XCTest.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ extension LoggingTest {
5656
("testStreamLogHandlerOutputFormat", testStreamLogHandlerOutputFormat),
5757
("testStreamLogHandlerOutputFormatWithMetaData", testStreamLogHandlerOutputFormatWithMetaData),
5858
("testStreamLogHandlerOutputFormatWithOrderedMetadata", testStreamLogHandlerOutputFormatWithOrderedMetadata),
59+
("testStreamLogHandlerWritesIncludeMetadataProviderMetadata", testStreamLogHandlerWritesIncludeMetadataProviderMetadata),
5960
("testStdioOutputStreamWrite", testStdioOutputStreamWrite),
6061
("testStdioOutputStreamFlush", testStdioOutputStreamFlush),
6162
("testOverloadingError", testOverloadingError),

Tests/LoggingTests/LoggingTest.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -824,6 +824,24 @@ class LoggingTest: XCTestCase {
824824
XCTAssert(interceptStream.strings[1].contains("a=a1 b=b1"), "LINES: \(interceptStream.strings[1])")
825825
}
826826

827+
func testStreamLogHandlerWritesIncludeMetadataProviderMetadata() {
828+
let interceptStream = InterceptStream()
829+
LoggingSystem.bootstrapInternal({ _, metadataProvider in
830+
StreamLogHandler(label: "test", stream: interceptStream, metadataProvider: metadataProvider)
831+
}, metadataProvider: .exampleMetadataProvider)
832+
let log = Logger(label: "test")
833+
834+
let testString = "my message is better than yours"
835+
log.critical("\(testString)")
836+
837+
let messageSucceeded = interceptStream.interceptedText?.trimmingCharacters(in: .whitespacesAndNewlines).hasSuffix(testString)
838+
839+
XCTAssertTrue(messageSucceeded ?? false)
840+
XCTAssertEqual(interceptStream.strings.count, 1)
841+
let message = interceptStream.strings.first!
842+
XCTAssertTrue(message.contains("example=example-value"), "message must contain metadata, was: \(message)")
843+
}
844+
827845
func testStdioOutputStreamWrite() {
828846
self.withWriteReadFDsAndReadBuffer { writeFD, readFD, readBuffer in
829847
let logStream = StdioOutputStream(file: writeFD, flushMode: .always)

0 commit comments

Comments
 (0)