|
1 |
| -/* |
2 |
| - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. |
3 |
| - * SPDX-License-Identifier: Apache-2.0. |
4 |
| - */ |
| 1 | +// |
| 2 | +// Copyright Amazon.com Inc. or its affiliates. |
| 3 | +// All Rights Reserved. |
| 4 | +// |
| 5 | +// SPDX-License-Identifier: Apache-2.0 |
| 6 | +// |
5 | 7 |
|
6 | 8 | import Logging
|
7 | 9 |
|
8 | 10 | public struct SwiftLogger: LogAgent {
|
| 11 | + public var level: LogAgentLevel |
| 12 | + |
9 | 13 | private let logger: Logger
|
10 | 14 | private let label: String
|
11 |
| - private var logLevel: LogAgentLevel |
12 | 15 |
|
13 | 16 | public init(label: String) {
|
14 | 17 | self.label = label
|
15 | 18 | self.logger = Logger(label: label)
|
16 |
| - self.logLevel = LogAgentLevel.info |
| 19 | + self.level = LogAgentLevel.info |
17 | 20 | }
|
18 | 21 |
|
19 | 22 | public init(label: String, logLevel: LogAgentLevel) {
|
20 | 23 | self.label = label
|
21 | 24 | self.logger = Logger(label: label)
|
22 |
| - self.logLevel = logLevel |
| 25 | + self.level = logLevel |
23 | 26 | }
|
24 | 27 |
|
25 | 28 | // This initializer is currently only used in tests, to inject a mock LogHandler.
|
26 | 29 | init(label: String, logLevel: LogAgentLevel, factory: (String) -> any LogHandler) {
|
27 | 30 | self.label = label
|
28 |
| - self.logLevel = logLevel |
| 31 | + self.level = logLevel |
29 | 32 | self.logger = Logger(label: label, factory: factory)
|
30 | 33 | }
|
31 | 34 |
|
32 |
| - public var level: LogAgentLevel { |
33 |
| - get { |
34 |
| - return logLevel |
35 |
| - } |
36 |
| - set(value) { |
37 |
| - logLevel = value |
38 |
| - } |
39 |
| - } |
40 |
| - |
41 | 35 | public var name: String {
|
42 | 36 | return label
|
43 | 37 | }
|
44 | 38 |
|
45 |
| - public func log(level: LogAgentLevel, |
46 |
| - message: String, |
47 |
| - metadata: [String: String]?, |
48 |
| - source: String, |
49 |
| - file: String, |
50 |
| - function: String, |
51 |
| - line: UInt) { |
52 |
| - let mappedDict = metadata?.mapValues { (value) -> Logger.MetadataValue in |
53 |
| - return Logger.MetadataValue.string(value) |
54 |
| - } |
55 |
| - self.logger.log(level: level.toLoggerLevel(), |
56 |
| - Logger.Message(stringLiteral: message), |
57 |
| - metadata: mappedDict, |
58 |
| - source: source, |
59 |
| - file: file, |
60 |
| - function: function, |
61 |
| - line: line) |
| 39 | + public func log( |
| 40 | + level: LogAgentLevel, |
| 41 | + message: @autoclosure () -> String, |
| 42 | + metadata: @autoclosure () -> [String: String]?, |
| 43 | + source: @autoclosure () -> String, |
| 44 | + file: String, |
| 45 | + function: String, |
| 46 | + line: UInt |
| 47 | + ) { |
| 48 | + self.logger.log( |
| 49 | + level: level.toLoggerLevel(), |
| 50 | + Logger.Message(stringLiteral: message()), |
| 51 | + metadata: metadata()?.mapValues { Logger.MetadataValue.string($0) }, |
| 52 | + source: source(), |
| 53 | + file: file as String, |
| 54 | + function: function as String, |
| 55 | + line: line |
| 56 | + ) |
62 | 57 | }
|
63 | 58 | }
|
64 | 59 |
|
65 | 60 | extension LogAgentLevel {
|
| 61 | + |
66 | 62 | func toLoggerLevel() -> Logger.Level {
|
67 | 63 | switch self {
|
68 | 64 | case .trace:
|
|
0 commit comments