Printer
A wrapper for OSLog.
Required Boiler Plate
Copy and paste the following.
Add exclusions if you want to disable print for certain logging domains, such as
.network.
import Foundation
import Printer
import OSLog
@MainActor
struct Log {
private static let identifier = try! BundleLocator.extractIdentifier()
private static let manager = PrintManager(bundleIdentifier: identifier, exclude: [.network])
}
extension Log {
/// Use .debug or .fault to log events here
static let network: Logger = manager.network
/// Use .info to log events here
static let viewcycle: Logger = manager.viewcycle
}
final class BundleLocator {
enum Error: Swift.Error {
case notFound
}
static var bundle: Bundle {
.main
// Bundle(for: self)
}
// static func urlForResource(named name: String, extension fileExtension: String) throws -> URL {
// guard let url = bundle.url(forResource: name, withExtension: fileExtension) else {
// throw Error.notFound
// }
// return url
// }
static func extractIdentifier() throws -> String {
guard let identifier = bundle.bundleIdentifier else {
throw Error.notFound
}
return identifier
}
}
Usage
Example SwiftUI view body.
var body: some View {
Text("Hello")
.onAppear {
Log.viewcycle.info("\(MyView.self) did appear.")
}
}