Build Information
Successful build of WrkstrmLog, reference 3.0.0 (e7b51e), with Swift 6.2 for macOS (SPM) on 12 Nov 2025 08:02:24 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-26.0.0.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 4.68.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/wrkstrm/WrkstrmLog.git
Reference: 3.0.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/wrkstrm/WrkstrmLog
* tag 3.0.0 -> FETCH_HEAD
HEAD is now at e7b51eb Merge branch 'main' of https://github.com/wrkstrm/WrkstrmLog
Cloned https://github.com/wrkstrm/WrkstrmLog.git
Revision (git rev-parse @):
e7b51ebc2cd4aec074014196bebdb87de05e4270
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/wrkstrm/WrkstrmLog.git at 3.0.0
Fetching https://github.com/apple/swift-log.git
Fetching https://github.com/apple/swift-docc-plugin
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/2160] Fetching swift-docc-plugin
[174/6558] Fetching swift-docc-plugin, swift-log
[1405/10135] Fetching swift-docc-plugin, swift-log, swift-docc-symbolkit
Fetched https://github.com/apple/swift-log.git from cache (1.17s)
Fetched https://github.com/apple/swift-docc-plugin from cache (1.17s)
Computing version for https://github.com/apple/swift-log.git
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.17s)
Computed https://github.com/apple/swift-log.git at 1.6.4 (1.72s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.4.5 (2.18s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (0.68s)
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.6.4
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.4.5
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
"identity": ".resolve-product-dependencies",
"name": "resolve-dependencies",
"url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"dependencies": [
{
"identity": "wrkstrmlog",
"name": "WrkstrmLog",
"url": "https://github.com/wrkstrm/WrkstrmLog.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/WrkstrmLog",
"dependencies": [
{
"identity": "swift-log",
"name": "swift-log",
"url": "https://github.com/apple/swift-log.git",
"version": "1.6.4",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-log",
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/wrkstrm/WrkstrmLog.git
[1/2230] Fetching wrkstrmlog
Fetched https://github.com/wrkstrm/WrkstrmLog.git from cache (0.94s)
Fetching https://github.com/apple/swift-log.git from cache
Fetched https://github.com/apple/swift-log.git from cache (0.43s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.4 (0.49s)
Creating working copy for https://github.com/wrkstrm/WrkstrmLog.git
Working copy of https://github.com/wrkstrm/WrkstrmLog.git resolved at 3.0.0 (e7b51eb)
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.6.4
warning: '.resolve-product-dependencies': dependency 'wrkstrmlog' is not used by any target
Found 1 product dependencies
- swift-log
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.2
Building package at path: $PWD
https://github.com/wrkstrm/WrkstrmLog.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.0.0.app xcrun swift build --arch arm64
[1/1] Compiling plugin Swift-DocC Preview
[2/2] Compiling plugin Swift-DocC
Building for debugging...
[2/5] Write sources
[4/5] Write swift-version-49B95AFC49DCD68C.txt
[6/10] Compiling Logging MetadataProvider.swift
[7/10] Compiling Logging LogHandler.swift
[8/10] Compiling Logging Locks.swift
[9/10] Emitting module Logging
[10/10] Compiling Logging Logging.swift
[11/31] Emitting module WrkstrmLog
[12/33] Compiling WrkstrmLog Platform.swift
[13/33] Compiling WrkstrmLog ProcessInfo+Xcode.swift
[14/33] Compiling WrkstrmLog Log+Levels.swift
[15/33] Compiling WrkstrmLog Log+Shared.swift
[16/33] Compiling WrkstrmLog DisabledLogBackend.swift
[17/33] Compiling WrkstrmLog FileLogBackend.swift
[18/33] Compiling WrkstrmLog OSLogBackend.swift
[19/33] Compiling WrkstrmLog PrintLogBackend.swift
[20/33] Compiling WrkstrmLog SwiftLogBackend.swift
[21/33] Compiling WrkstrmLog CommonLogContext.swift
[22/33] Compiling WrkstrmLog FatalErrorUtil.swift
[23/33] Compiling WrkstrmLog Level+Emoji.swift
[24/33] Compiling WrkstrmLog Log+CacheStorage.WASM.swift
[25/33] Compiling WrkstrmLog Log+CacheStorage.swift
[26/33] Compiling WrkstrmLog Level+OSLogType.swift
[27/33] Compiling WrkstrmLog Log+Cache.swift
[28/33] Compiling WrkstrmLog DecoratedBackend.swift
[29/33] Compiling WrkstrmLog FanoutLog.swift
[30/33] Compiling WrkstrmLog Log+Decorator.swift
[31/33] Compiling WrkstrmLog Log+Inject.swift
[32/33] Compiling WrkstrmLog Log.swift
[33/33] Compiling WrkstrmLog LogBackend.swift
Build complete! (14.71s)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-docc-plugin",
"requirement" : {
"range" : [
{
"lower_bound" : "1.4.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-docc-plugin"
},
{
"identity" : "swift-log",
"requirement" : {
"range" : [
{
"lower_bound" : "1.6.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-log.git"
}
],
"manifest_display_name" : "WrkstrmLog",
"name" : "WrkstrmLog",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "16.0"
},
{
"name" : "macos",
"version" : "13.0"
},
{
"name" : "maccatalyst",
"version" : "13.0"
},
{
"name" : "tvos",
"version" : "16.0"
},
{
"name" : "visionos",
"version" : "1.0"
},
{
"name" : "watchos",
"version" : "9.0"
}
],
"products" : [
{
"name" : "WrkstrmLog",
"targets" : [
"WrkstrmLog"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "WrkstrmLogTests",
"module_type" : "SwiftTarget",
"name" : "WrkstrmLogTests",
"path" : "Tests/WrkstrmLogTests",
"sources" : [
"BackendsArrayTests.swift",
"CacheConcurrencyTests.swift",
"FileBackendTests.swift",
"LevelExtensionsTests.swift",
"LevelMaskTests.swift",
"OSLoggerTests.swift",
"ProcessInfoXcodeTests.swift",
"WrkstrmLogTests.swift"
],
"target_dependencies" : [
"WrkstrmLog"
],
"type" : "test"
},
{
"c99name" : "WrkstrmLog",
"module_type" : "SwiftTarget",
"name" : "WrkstrmLog",
"path" : "Sources/WrkstrmLog",
"product_dependencies" : [
"Logging"
],
"product_memberships" : [
"WrkstrmLog"
],
"sources" : [
"Backends/DisabledLogBackend.swift",
"Backends/FileLogBackend.swift",
"Backends/OSLogBackend.swift",
"Backends/PrintLogBackend.swift",
"Backends/SwiftLogBackend.swift",
"CommonLogContext.swift",
"DecoratedBackend.swift",
"FanoutLog.swift",
"FatalErrorUtil.swift",
"Level+Emoji.swift",
"Level+OSLogType.swift",
"Log+Cache.swift",
"Log+CacheStorage.WASM.swift",
"Log+CacheStorage.swift",
"Log+Decorator.swift",
"Log+Inject.swift",
"Log+Levels.swift",
"Log+Shared.swift",
"Log.swift",
"LogBackend.swift",
"Platform.swift",
"ProcessInfo+Xcode.swift"
],
"type" : "library"
}
],
"tools_version" : "6.1"
}
✅ Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path: $PWD/.docs/wrkstrm/wrkstrmlog/3.0.0
Repository: wrkstrm/WrkstrmLog
Swift version used: 6.2
.package(url: "https://github.com/apple/swift-docc-plugin", from: "1.4.0"),
Target: WrkstrmLog
Extracting symbol information for 'WrkstrmLog'...
Finished extracting symbol information for 'WrkstrmLog'. (1.79s)
Building documentation for 'WrkstrmLog'...
warning: Missing 'Steps' child directive
The 'Section' directive must have exactly one 'Steps' child directive
--> Tutorials/ExposureLevels.tutorial:6:3-15:4
4 | }
5 |
6 + @Section(title: "Set a Global Level") {
7 + Define the minimum level that should be visible across the application.
8 + Configure the global level explicitly with `Log.globalExposureLevel`.
9 +
10 + @ContentAndMedia {
11 + ```swift
12 + Log.globalExposureLevel = .warning
13 + ```
14 + }
15 + }
16 |
17 | @Section(title: "Clamp with Per-Logger Levels") {
warning: Missing 'Steps' child directive
The 'Section' directive must have exactly one 'Steps' child directive
--> Tutorials/ExposureLevels.tutorial:17:3-30:4
15 | }
16 |
17 + @Section(title: "Clamp with Per-Logger Levels") {
18 + Each logger declares the highest level it may expose publicly, allowing
19 + communities to share only critical or tracing data.
20 +
21 + @ContentAndMedia {
22 + @Image(source: "ExposureDiagram", alt: "Global exposure clamped by per-logger levels")
23 +
24 + ```swift
25 + let libraryLogger = Log(system: "Library", category: "Networking", maxExposureLevel: .debug)
26 +
27 + Log.globalExposureLevel = .trace // emits up to .debug for libraryLogger
28 + ```
29 + }
30 + }
31 | }
warning: Missing 'Steps' child directive
The 'Section' directive must have exactly one 'Steps' child directive
--> Tutorials/FileLogging.tutorial:6:3-30:4
4 | }
5 |
6 + @Section(title: "Create a Session Log File") {
7 + Use `FileLogBackend` to append lines to a file. Pair it with the JSON decorator for NDJSON.
8 +
9 + @ContentAndMedia {
10 + ```swift
11 + #if canImport(Foundation)
12 + import Foundation
13 + import WrkstrmLog
14 +
15 + let logsDir = URL(fileURLWithPath: NSTemporaryDirectory())
16 + let fileBackend = FileLogBackend(directory: logsDir, baseName: "app")
17 +
18 + var sessionLog = Log(
19 + system: "ExampleApp",
20 + category: "session",
21 + maxExposureLevel: .info,
22 + backends: [fileBackend]
23 + )
24 + sessionLog.decorator = Log.Decorator.JSON()
25 +
26 + sessionLog.info("Session started")
27 + #endif
28 + ```
29 + }
30 + }
31 |
32 | @Section(title: "Enable Rotation (Daily/Size)") {
warning: Missing 'Steps' child directive
The 'Section' directive must have exactly one 'Steps' child directive
--> Tutorials/FileLogging.tutorial:32:3-56:4
30 | }
31 |
32 + @Section(title: "Enable Rotation (Daily/Size)") {
33 + `FileLogBackend` can roll logs by day or after a size threshold.
34 +
35 + @ContentAndMedia {
36 + ```swift
37 + #if canImport(Foundation)
38 + import Foundation
39 + import WrkstrmLog
40 +
41 + let dir = URL(fileURLWithPath: NSTemporaryDirectory())
42 + // Daily roll + ~5 MB size cap
43 + let rotating = FileLogBackend(
44 + directory: dir,
45 + baseName: "example",
46 + maxBytes: 5 * 1024 * 1024,
47 + rollDaily: true
48 + )
49 +
50 + var rotatingLog = Log(system: "ExampleApp", category: "rotate", backends: [rotating])
51 + rotatingLog.decorator = Log.Decorator.JSON()
52 + rotatingLog.notice("File rotation active")
53 + #endif
54 + ```
55 + }
56 + }
57 |
58 | @Section(title: "Fan Out to File + Console") {
warning: Missing 'Steps' child directive
The 'Section' directive must have exactly one 'Steps' child directive
--> Tutorials/FileLogging.tutorial:58:3-79:4
56 | }
57 |
58 + @Section(title: "Fan Out to File + Console") {
59 + Combine a user-facing console log with a structured file log using `LogGroup`.
60 +
61 + @ContentAndMedia {
62 + ```swift
63 + #if canImport(Foundation)
64 + import Foundation
65 + import WrkstrmLog
66 +
67 + let dir = URL(fileURLWithPath: NSTemporaryDirectory())
68 + let fileBackend = FileLogBackend(directory: dir, baseName: "example")
69 +
70 + let userLog = Log(system: "ExampleApp", category: "ui", backends: [PrintLogBackend()])
71 + var auditLog = Log(system: "ExampleApp", category: "audit", backends: [fileBackend])
72 + auditLog.decorator = Log.Decorator.JSON()
73 +
74 + let combined = LogGroup([userLog, auditLog])
75 + combined.info("Launching…")
76 + #endif
77 + ```
78 + }
79 + }
80 | }
81 |
warning: Missing 'Steps' child directive
The 'Section' directive must have exactly one 'Steps' child directive
--> Tutorials/LoggingAPIs.tutorial:6:3-16:4
4 | }
5 |
6 + @Section(title: "Create a Logger") {
7 + Instantiate a logger with a system, category, and optional `maxExposureLevel` to opt in to additional logs.
8 +
9 + @ContentAndMedia {
10 + ```swift
11 + import WrkstrmLog
12 +
13 + let logger = Log(system: "ExampleApp", category: "Networking", maxExposureLevel: .info)
14 + ```
15 + }
16 + }
17 |
18 | @Section(title: "Control Global Exposure") {
warning: Missing 'Steps' child directive
The 'Section' directive must have exactly one 'Steps' child directive
--> Tutorials/LoggingAPIs.tutorial:18:3-28:4
16 | }
17 |
18 + @Section(title: "Control Global Exposure") {
19 + WrkstrmLog hides messages more verbose than `critical` by default. Raise
20 + the global exposure level with `Log.globalExposureLevel` to view additional details.
21 + Configure the global exposure level explicitly.
22 +
23 + @ContentAndMedia {
24 + ```swift
25 + Log.globalExposureLevel = .debug
26 + ```
27 + }
28 + }
29 |
30 | @Section(title: "Choose Backends") {
warning: Missing 'Steps' child directive
The 'Section' directive must have exactly one 'Steps' child directive
--> Tutorials/LoggingAPIs.tutorial:30:3-40:4
28 | }
29 |
30 + @Section(title: "Choose Backends") {
31 + Select the backend(s) appropriate for your platform or environment. When multiple are supplied,
32 + index 0 is treated as the primary.
33 +
34 + @ContentAndMedia {
35 + ```swift
36 + let osLogger = Log(system: "ExampleApp", category: "Startup", backends: [OSLogBackend()])
37 + let printLogger = Log(system: "ExampleApp", category: "Startup", backends: [PrintLogBackend()])
38 + ```
39 + }
40 + }
41 |
42 | @Section(title: "Runtime Backend Selection") {
warning: Missing 'Steps' child directive
The 'Section' directive must have exactly one 'Steps' child directive
--> Tutorials/LoggingAPIs.tutorial:42:3-62:4
40 | }
41 |
42 + @Section(title: "Runtime Backend Selection") {
43 + Adjust the active backend kinds at runtime. When multiple are set, index 0 is treated as
44 + the primary.
45 +
46 + @ContentAndMedia {
47 + ```swift
48 + // Set an ordered list of kinds
49 + Log.Inject.setBackends([.os, .swift])
50 +
51 + // Convenience: set a single kind
52 + Log.Inject.setBackend(.os)
53 +
54 + // Append/remove kinds
55 + Log.Inject.appendBackend(.print)
56 + Log.Inject.removeBackend(.swift)
57 +
58 + // Clear custom selection; revert to platform default
59 + Log.Inject.removeAllCustomBackends()
60 + ```
61 + }
62 + }
63 |
64 | @Section(title: "Record Messages") {
warning: Missing 'Steps' child directive
The 'Section' directive must have exactly one 'Steps' child directive
--> Tutorials/LoggingAPIs.tutorial:64:3-77:4
62 | }
63 |
64 + @Section(title: "Record Messages") {
65 + Each logger provides methods for standard log levels.
66 +
67 + @ContentAndMedia {
68 + ```swift
69 + logger.verbose("Request started") // 🔍
70 + logger.debug("Parsing response") // 🐞
71 + logger.info("Request progress") // ℹ️
72 + logger.notice("Request finished") // 📝
73 + logger.warning("Slow response") // ⚠️
74 + logger.error("Request failed: \(error)") // ❗
75 + ```
76 + }
77 + }
78 |
79 | @Section(title: "Understand Log Levels") {
warning: Missing 'Steps' child directive
The 'Section' directive must have exactly one 'Steps' child directive
--> Tutorials/LoggingAPIs.tutorial:79:3-82:4
77 | }
78 |
79 + @Section(title: "Understand Log Levels") {
80 + For a deeper explanation of each level and example messages, see
81 + <doc:LogLevels>.
82 + }
83 | }
Finished building documentation for 'WrkstrmLog' (0.27s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/wrkstrm/wrkstrmlog/3.0.0
Building for debugging...
[0/8] Write sources
[1/8] Write snippet-extract-tool-entitlement.plist
[2/8] Write sources
[4/8] Write swift-version-49B95AFC49DCD68C.txt
[6/53] Compiling SymbolKit GenericConstraint.swift
[7/53] Compiling SymbolKit GenericParameter.swift
[8/53] Compiling SymbolKit Generics.swift
[9/53] Compiling SymbolKit Namespace.swift
[10/57] Emitting module SymbolKit
[11/57] Compiling SymbolKit DeclarationFragments.swift
[12/57] Compiling SymbolKit Fragment.swift
[13/57] Compiling SymbolKit FragmentKind.swift
[14/57] Compiling SymbolKit FunctionParameter.swift
[15/57] Compiling SymbolKit FunctionSignature.swift
[16/57] Compiling SymbolKit Relationship.swift
[17/57] Compiling SymbolKit RelationshipKind.swift
[18/57] Compiling SymbolKit SourceOrigin.swift
[19/57] Compiling SymbolKit GenericConstraints.swift
[20/57] Compiling SymbolKit Swift.swift
[21/57] Compiling SymbolKit SourceRange.swift
[22/57] Compiling SymbolKit Metadata.swift
[23/57] Compiling SymbolKit Module.swift
[24/57] Compiling SymbolKit OperatingSystem.swift
[25/57] Compiling SymbolKit Platform.swift
[26/57] Compiling SymbolKit Mixin+Equals.swift
[27/57] Compiling SymbolKit Mixin+Hash.swift
[28/57] Compiling SymbolKit Mixin.swift
[29/57] Compiling SymbolKit LineList.swift
[30/57] Compiling SymbolKit Position.swift
[31/57] Compiling SymbolKit Names.swift
[32/57] Compiling SymbolKit SPI.swift
[33/57] Compiling SymbolKit Snippet.swift
[34/57] Compiling SymbolKit Extension.swift
[35/57] Compiling SymbolKit SemanticVersion.swift
[36/57] Compiling SymbolKit AccessControl.swift
[37/57] Compiling SymbolKit Availability.swift
[38/57] Compiling SymbolKit AvailabilityItem.swift
[39/57] Compiling SymbolKit Domain.swift
[40/57] Compiling SymbolKit Identifier.swift
[41/57] Compiling SymbolKit KindIdentifier.swift
[42/57] Compiling SymbolKit Location.swift
[43/57] Compiling SymbolKit Mutability.swift
[44/57] Compiling SymbolKit Symbol.swift
[45/57] Compiling SymbolKit SymbolKind.swift
[46/57] Compiling SymbolKit SymbolGraph.swift
[47/57] Compiling SymbolKit GraphCollector.swift
[48/57] Emitting module Snippets
[49/57] Compiling Snippets SnippetParser.swift
[50/57] Compiling Snippets Snippet.swift
[51/57] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[52/57] Compiling SymbolKit UnifiedSymbol.swift
[53/57] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[54/57] Compiling SymbolKit UnifiedSymbolGraph.swift
[55/61] Compiling snippet_extract URL+Status.swift
[56/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[57/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Emitting module snippet_extract
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract-tool
[60/61] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (2.87s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'WrkstrmLog' complete! (0.21s)
561
5 /Users/admin/builder/spi-builder-workspace/.docs/wrkstrm/wrkstrmlog/3.0.0
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/wrkstrm/wrkstrmlog/3.0.0
File count: 561
Doc size: 5.0MB
Preparing doc bundle ...
Uploading prod-wrkstrm-wrkstrmlog-3.0.0-840ca49f.zip to s3://spi-docs-inbox/prod-wrkstrm-wrkstrmlog-3.0.0-840ca49f.zip
Copying... [13%]
Copying... [20%]
Copying... [34%]
Copying... [40%]
Copying... [54%]
Copying... [61%]
Copying... [74%]
Copying... [81%]
Copying... [94%]
Copying... [100%]
Done.