Xcode ToolsMidMCQ

What is `OSLog` and how is it better than `print`?

Test your knowledge:

Explanation & Code

Answer: OSLog is Apple's structured logging framework. It's faster than print, integrates with Console.app, supports log levels, and redacts sensitive data in production.

Code Example:

import OSLog

// Create a logger with subsystem and category
private let logger = Logger(subsystem: "com.myapp", category: "networking")

class NetworkManager {
    func fetchUser(id: Int) async throws -> User {
        logger.info("Fetching user \(id)")

        do {
            let user = try await api.getUser(id: id)
            logger.debug("User fetched: \(user.name)")
            return user
        } catch {
            logger.error("Failed to fetch user: \(error.localizedDescription)")
            throw error
        }
    }
}

Log levels:

  • .debug — verbose, only in development
  • .info — general info, retained briefly
  • .notice — important events
  • .error — recoverable errors
  • .fault — serious bugs, always persisted

Why better than print:

  • Compiled out of release builds (.debug)
  • Auto-redacts private data: logger.info("Token: \(token, privacy: .private)")
  • Viewable in Console.app on device without Xcode
  • Negligible performance impact

Rate your understanding:

Ready to practice more Xcode Tools?

Test yourself with our interactive quiz mode or browse all curated questions for this topic.