一个简单的 Swift 宏,可以向类、结构体、actor 或枚举添加一个静态 logger
方法,该方法基于 bundle identifier 和类型名称使用默认的 subsystem 和 category。
import OSLog
import StaticLogger
@StaticLogger
struct MyStruct {
let x: Int
func test() {
Self.logger.debug("X is \(x)")
}
}
展开为
struct MyStruct {
let x: Int
func test() {
Self.logger.debug("X is \(x)")
}
static let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "", category: "MyStruct")
}
您还可以通过将 subsystem 或 category 传递给 @StaticLogger
来覆盖 logger 的 subsystem 或 category。
@StaticLogger(subsystem: "MySubsystem", category: "MyCategory")