Skip to content

Commit 50f28c1

Browse files
committed
Fix compilation on older Swift versions
1 parent 05b8a6b commit 50f28c1

File tree

5 files changed

+67
-7
lines changed

5 files changed

+67
-7
lines changed

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ let package = Package(
1414
targets: [
1515
.target(name: "CLTLogger", dependencies: [
1616
.product(name: "Logging", package: "swift-log"),
17-
], path: "Sources"),
17+
], path: "Sources", exclude: ["CLTLogger+WithSendable.swift"]),
1818
.testTarget(name: "CLTLoggerTests", dependencies: ["CLTLogger"])
1919
]
2020
)

[email protected]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ let package = Package(
2222
targets: [
2323
.target(name: "CLTLogger", dependencies: [
2424
.product(name: "Logging", package: "swift-log"),
25-
], path: "Sources", swiftSettings: swiftSettings),
25+
], path: "Sources", exclude: ["CLTLogger+NoSendable.swift"], swiftSettings: swiftSettings),
2626
.testTarget(name: "CLTLoggerTests", dependencies: ["CLTLogger"], swiftSettings: swiftSettings)
2727
]
2828
)

Sources/CLTLogger+NoSendable.swift

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import Foundation
2+
3+
import Logging
4+
5+
6+
7+
extension CLTLogger {
8+
9+
public init(label: String, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) {
10+
self.init(metadataProvider: metadataProvider)
11+
}
12+
13+
public static func initWithLabelMetadata(label: String, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) -> CLTLogger {
14+
var res = self.init(metadataProvider: metadataProvider)
15+
res.metadata = ["zz-label": "\(label)"]
16+
return res
17+
}
18+
19+
public static func initWithDateMetadata(label: String, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) -> CLTLogger {
20+
return self.init(metadataProvider: .init{ ["zz-date": "\(Date())"].merging(metadataProvider?.get() ?? [:], uniquingKeysWith: { _, new in new }) })
21+
}
22+
23+
public static func initWithLabelAndDateMetadata(label: String, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) -> CLTLogger {
24+
var res = self.init(metadataProvider: .init{ ["zz-date": "\(Date())"].merging(metadataProvider?.get() ?? [:], uniquingKeysWith: { _, new in new }) })
25+
res.metadata = ["zz-label": "\(label)"]
26+
return res
27+
}
28+
29+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import Foundation
2+
3+
import Logging
4+
5+
6+
7+
/* The @Sendable attribute is only available starting at Swift 5.5.
8+
* We make these methods only available starting at Swift 5.8 for our convenience (avoids creating another Package@swift-... file)
9+
* and because for Swift <5.8 the non-@Sendable variants of the methods are available. */
10+
extension CLTLogger {
11+
12+
@Sendable
13+
public init(label: String, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) {
14+
self.init(metadataProvider: metadataProvider)
15+
}
16+
17+
@Sendable
18+
public static func initWithLabelMetadata(label: String, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) -> CLTLogger {
19+
var res = self.init(metadataProvider: metadataProvider)
20+
res.metadata = ["zz-label": "\(label)"]
21+
return res
22+
}
23+
24+
@Sendable
25+
public static func initWithDateMetadata(label: String, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) -> CLTLogger {
26+
return self.init(metadataProvider: .init{ ["zz-date": "\(Date())"].merging(metadataProvider?.get() ?? [:], uniquingKeysWith: { _, new in new }) })
27+
}
28+
29+
@Sendable
30+
public static func initWithLabelAndDateMetadata(label: String, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) -> CLTLogger {
31+
var res = self.init(metadataProvider: .init{ ["zz-date": "\(Date())"].merging(metadataProvider?.get() ?? [:], uniquingKeysWith: { _, new in new }) })
32+
res.metadata = ["zz-label": "\(label)"]
33+
return res
34+
}
35+
36+
}

Sources/CLTLogger.swift

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,6 @@ public struct CLTLogger : LogHandler {
132132
public let multilineMode: MultilineMode
133133
public let constantsByLevel: [Logger.Level: Constants]
134134

135-
@Sendable
136-
public init(label: String, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) {
137-
self.init(metadataProvider: metadataProvider)
138-
}
139-
140135
public init(fileHandle: FileHandle = .standardError, multilineMode: MultilineMode = .default, logStyle: Style = .auto, metadataProvider: Logger.MetadataProvider? = LoggingSystem.metadataProvider) {
141136
let logPrefixStyle = (logStyle != .auto ? logStyle : CLTLogger.autoLogStyle(with: fileHandle))
142137

0 commit comments

Comments
 (0)