Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 23 additions & 39 deletions Sources/Logging/Docs.docc/ImplementingALogHandler.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ func logHandlerValueSemantics() {
var logger1 = Logger(label: "first logger")
logger1.logLevel = .debug
logger1[metadataKey: "only-on"] = "first"

var logger2 = logger1
logger2.logLevel = .error // Must not affect logger1
logger2[metadataKey: "only-on"] = "second" // Must not affect logger1

// These expectations must pass
#expect(logger1.logLevel == .debug)
#expect(logger2.logLevel == .error)
Expand All @@ -51,37 +51,29 @@ public struct PrintLogHandler: LogHandler {
private let label: String
public var logLevel: Logger.Level = .info
public var metadata: Logger.Metadata = [:]

public init(label: String) {
self.label = label
}

public func log(
level: Logger.Level,
message: Logger.Message,
metadata: Logger.Metadata?,
source: String,
file: String,
function: String,
line: UInt
) {

public func log(event: LogEvent) {
let timestamp = ISO8601DateFormatter().string(from: Date())
let levelString = level.rawValue.uppercased()
let levelString = event.level.rawValue.uppercased()

// Merge handler metadata with message metadata
let combinedMetadata = Self.prepareMetadata(
base: self.metadata
explicit: metadata
base: self.metadata,
explicit: event.metadata
)

// Format metadata
let metadataString = combinedMetadata.map { "\($0.key)=\($0.value)" }.joined(separator: ",")

// Create log line and print to console
let logLine = "\(label) \(timestamp) \(levelString) [\(metadataString)]: \(message)"
let logLine = "\(label) \(timestamp) \(levelString) [\(metadataString)]: \(event.message)"
print(logLine)
}

public subscript(metadataKey key: String) -> Logger.Metadata.Value? {
get {
return self.metadata[key]
Expand Down Expand Up @@ -128,41 +120,33 @@ public struct PrintLogHandler: LogHandler {
public var logLevel: Logger.Level = .info
public var metadata: Logger.Metadata = [:]
public var metadataProvider: Logger.MetadataProvider?

public init(label: String) {
self.label = label
}

public func log(
level: Logger.Level,
message: Logger.Message,
metadata: Logger.Metadata?,
source: String,
file: String,
function: String,
line: UInt
) {

public func log(event: LogEvent) {
let timestamp = ISO8601DateFormatter().string(from: Date())
let levelString = level.rawValue.uppercased()
let levelString = event.level.rawValue.uppercased()

// Get provider metadata
let providerMetadata = metadataProvider?.get() ?? [:]

// Merge handler metadata with message metadata
let combinedMetadata = Self.prepareMetadata(
base: self.metadata,
provider: self.metadataProvider,
explicit: metadata
explicit: event.metadata
)

// Format metadata
let metadataString = combinedMetadata.map { "\($0.key)=\($0.value)" }.joined(separator: ",")

// Create log line and print to console
let logLine = "\(label) \(timestamp) \(levelString) [\(metadataString)]: \(message)"
let logLine = "\(label) \(timestamp) \(levelString) [\(metadataString)]: \(event.message)"
print(logLine)
}

public subscript(metadataKey key: String) -> Logger.Metadata.Value? {
get {
return self.metadata[key]
Expand Down
7 changes: 7 additions & 0 deletions Sources/Logging/Docs.docc/Reference/LogEvent.md
Comment thread
samuelmurray marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# ``Logging/LogEvent``

## Topics

### Creating a log event

- ``init(level:message:metadata:source:file:function:line:)``
2 changes: 2 additions & 0 deletions Sources/Logging/Docs.docc/Reference/LogHandler.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

### Sending log messages

- ``log(event:)-7x67``
- ``log(event:)-17f2r``
- ``log(level:message:metadata:source:file:function:line:)-8kgt7``
- ``log(level:message:metadata:source:file:function:line:)-69pez``
- ``log(level:message:metadata:file:function:line:)-89rya``
Expand Down
14 changes: 14 additions & 0 deletions Sources/Logging/Docs.docc/Reference/Logger.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,35 +14,49 @@

- ``trace(_:metadata:file:function:line:)``
- ``trace(_:metadata:source:file:function:line:)``
- ``trace(_:error:metadata:source:file:function:line:)``

### Sending debug log messages

- ``debug(_:metadata:file:function:line:)``
- ``debug(_:metadata:source:file:function:line:)``
- ``debug(_:error:metadata:source:file:function:line:)``

### Sending info log messages

- ``info(_:metadata:file:function:line:)``
- ``info(_:metadata:source:file:function:line:)``
- ``info(_:error:metadata:source:file:function:line:)``

### Sending notice log messages

- ``notice(_:metadata:file:function:line:)``
- ``notice(_:metadata:source:file:function:line:)``
- ``notice(_:error:metadata:source:file:function:line:)``

### Sending warning log messages

- ``warning(_:metadata:file:function:line:)``
- ``warning(_:metadata:source:file:function:line:)``
- ``warning(_:error:metadata:source:file:function:line:)``

### Sending error log messages

- ``error(_:metadata:file:function:line:)``
- ``error(_:metadata:source:file:function:line:)``
- ``error(_:error:metadata:source:file:function:line:)``

### Sending critical log messages

- ``critical(_:metadata:file:function:line:)``
- ``critical(_:metadata:source:file:function:line:)``
- ``critical(_:error:metadata:source:file:function:line:)``

### Sending general log messages

- ``log(level:_:metadata:file:function:line:)``
- ``log(level:_:metadata:source:file:function:line:)``
- ``log(level:_:error:metadata:source:file:function:line:)``
- ``Level``
- ``Message``
- ``Metadata``
Expand Down
1 change: 1 addition & 0 deletions Sources/Logging/Docs.docc/Reference/MultiplexLogHandler.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

### Sending log messages

- ``log(event:)``
- ``log(level:message:metadata:source:file:function:line:)``

### Updating metadata
Expand Down
1 change: 1 addition & 0 deletions Sources/Logging/Docs.docc/Reference/StreamLogHandler.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

### Sending log messages

- ``log(event:)``
- ``log(level:message:metadata:source:file:function:line:)``

### Updating metadata
Expand Down
2 changes: 2 additions & 0 deletions Sources/Logging/Docs.docc/Reference/SwiftLogNoOpLogHandler.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@

### Sending log messages

- ``log(event:)``
- ``log(level:message:metadata:source:file:function:line:)``
- ``log(level:message:metadata:file:function:line:)``

### Updating metadata

Expand Down
1 change: 1 addition & 0 deletions Sources/Logging/Docs.docc/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ backend.
### Log Handlers

- ``LogHandler``
- ``LogEvent``
- ``MultiplexLogHandler``
- ``StreamLogHandler``
- ``SwiftLogNoOpLogHandler``
Expand Down
9 changes: 1 addition & 8 deletions Sources/Logging/LogHandler.swift
Original file line number Diff line number Diff line change
Expand Up @@ -96,14 +96,7 @@
/// }
/// }
///
/// public func log(
/// level: Logger.Level,
/// message: Logger.Message,
/// metadata: Logger.Metadata?,
/// source: String,
/// file: String,
/// function: String,
/// line: UInt) {
/// public func log(event: LogEvent) {
/// // [...]
/// }
///
Expand Down
Loading