← ClaudeAtlas

apple-oslog-best-practiceslisted

Apple unified logging (`os.Logger`) best practices — privacy modifier, subsystem / category 設計, log level 使い分け. Opt-in skill carved out of source/rules/common/ios-quality.md under ADR-0037 (rule scope policy). Invoked via ADR-0036 `--suggest-skills` when `import os` (with Logger) is detected.
ttamakijp/dev-templates · ★ 0 · Data & Documents · score 74
Install: claude install-skill ttamakijp/dev-templates
# Skill: Apple `os.Logger` best practices Apple unified logging (`os.Logger`) を使う iOS / macOS / watchOS / tvOS / visionOS プロジェクトで、**privacy 修飾子 / subsystem 規約 / category 設計 / log level 使い分け** を実装段階で組込むための skill。 [[ADR-0037]] rule scope policy により `os.Logger` の具体的な命名・設計規約は rule ([[ios-quality]]) から本 skill へ切出された。[[ADR-0036]] `--suggest-skills` mode が `import os` + `Logger` 使用検出時に提案する。 ## When to invoke - iOS / macOS 等のプロジェクトで `import os` + `Logger` を使う - `.info` / `.debug` レベルが Console.app / `log show` で見えなくて困っている (まず [[build-and-debug-ios]] の OS 仕様部分で観察フラグを確認、本 skill は 実装側の規約担当) - subsystem / category の命名で迷う - ADR-0036 `--suggest-skills` から提案を受けた ## 要件 - `os.Logger` の subsystem を `Bundle.main.bundleIdentifier` 由来 + fallback 1 段で定義す��� - privacy 修飾子 (`.public` / `.private` / `.sensitive`) を **必ず明示** する - category を 1 ファイル 1 category 規約で管理し、grep / `log show --predicate` の横断検索を容易にする - log level の使い分け (`.notice` / `.info` / `.debug` / `.error` / `.fault`) を adopter 内で一貫させる ## 手順 ### Step 1: Logger extension の定義 (subsystem + category) ```swift import os extension Logger { private static let subsystem = Bundle.main.bundleIdentifier ?? "<reverse-dns-fallback>" static let app = Logger(subsystem: subsystem, category: "app") static let ble = Logger(subsystem: subsystem, category: "ble") static let playback = Logger(subsystem: subsystem, category: "playback") static let network = Logger(subsystem: subsystem, category: "network") static let pe