Skip to content

Commit

Permalink
fix: Change logger params to @autoclosures (#865)
Browse files Browse the repository at this point in the history
  • Loading branch information
jbelkins authored Nov 21, 2024
1 parent b7ea81c commit 650267e
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 41 deletions.
6 changes: 3 additions & 3 deletions Sources/Smithy/Logging/LogAgent.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ public protocol LogAgent {
/// - function: The function the log line was emitted from.
/// - line: The line the log message was emitted from.
func log(level: LogAgentLevel,
message: String,
metadata: [String: String]?,
source: String,
message: @autoclosure () -> String,
metadata: @autoclosure () -> [String: String]?,
source: @autoclosure () -> String,
file: String,
function: String,
line: UInt)
Expand Down
64 changes: 30 additions & 34 deletions Sources/Smithy/Logging/SwiftLog+LogAgent.swift
Original file line number Diff line number Diff line change
@@ -1,68 +1,64 @@
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//

import Logging

public struct SwiftLogger: LogAgent {
public var level: LogAgentLevel

private let logger: Logger
private let label: String
private var logLevel: LogAgentLevel

public init(label: String) {
self.label = label
self.logger = Logger(label: label)
self.logLevel = LogAgentLevel.info
self.level = LogAgentLevel.info
}

public init(label: String, logLevel: LogAgentLevel) {
self.label = label
self.logger = Logger(label: label)
self.logLevel = logLevel
self.level = logLevel
}

// This initializer is currently only used in tests, to inject a mock LogHandler.
init(label: String, logLevel: LogAgentLevel, factory: (String) -> any LogHandler) {
self.label = label
self.logLevel = logLevel
self.level = logLevel
self.logger = Logger(label: label, factory: factory)
}

public var level: LogAgentLevel {
get {
return logLevel
}
set(value) {
logLevel = value
}
}

public var name: String {
return label
}

public func log(level: LogAgentLevel,
message: String,
metadata: [String: String]?,
source: String,
file: String,
function: String,
line: UInt) {
let mappedDict = metadata?.mapValues { (value) -> Logger.MetadataValue in
return Logger.MetadataValue.string(value)
}
self.logger.log(level: level.toLoggerLevel(),
Logger.Message(stringLiteral: message),
metadata: mappedDict,
source: source,
file: file,
function: function,
line: line)
public func log(
level: LogAgentLevel,
message: @autoclosure () -> String,
metadata: @autoclosure () -> [String: String]?,
source: @autoclosure () -> String,
file: String,
function: String,
line: UInt
) {
self.logger.log(
level: level.toLoggerLevel(),
Logger.Message(stringLiteral: message()),
metadata: metadata()?.mapValues { Logger.MetadataValue.string($0) },
source: source(),
file: file as String,
function: function as String,
line: line
)
}
}

extension LogAgentLevel {

func toLoggerLevel() -> Logger.Level {
switch self {
case .trace:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,8 @@ private class TestLogger: LogAgent {
self.level = level
}

func log(level: LogAgentLevel = .info, message: String, metadata: [String : String]? = nil, source: String = "ChecksumUnitTests", file: String = #file, function: String = #function, line: UInt = #line) {
messages.append((level: level, message: message))
func log(level: LogAgentLevel = .info, message: @autoclosure () -> String, metadata: @autoclosure () -> [String : String]? = nil, source: @autoclosure () -> String = "ChecksumUnitTests", file: String = #file, function: String = #function, line: UInt = #line) {
messages.append((level: level, message: message()))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ class OrchestratorTests: XCTestCase {
var name: String = "TestTraceLogger"
var level: LogAgentLevel = .debug

func log(level: LogAgentLevel, message: String, metadata: [String : String]?, source: String, file: String, function: String, line: UInt) {
trace.append(message)
func log(level: LogAgentLevel, message: @autoclosure () -> String, metadata: @autoclosure () -> [String : String]?, source: @autoclosure () -> String, file: String, function: String, line: UInt) {
trace.append(message())
}
}

Expand Down

0 comments on commit 650267e

Please sign in to comment.