Back to list
rshankras

logging-setup

by rshankras

13🍴 3📅 Jan 23, 2026

SKILL.md


name: logging-setup description: Generates structured logging infrastructure using os.log/Logger to replace print() statements. Use when user wants to add proper logging, replace print statements, or set up app logging. allowed-tools: [Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion]

Logging Setup Generator

Replace print() statements with Apple's structured logging system (os.log/Logger) for better debugging, privacy controls, and Console.app integration.

When This Skill Activates

Use this skill when the user:

  • Asks to "add logging" or "set up logging"
  • Wants to "replace print statements"
  • Mentions "os.log", "Logger", or "structured logging"
  • Asks about "debug logging" or "production logging"
  • Wants to audit print() usage in their codebase

Why Logger Over print()

print()Logger
Always executesDebug logs compiled out in Release
No filteringFilter by subsystem/category in Console.app
No privacy.private, .public, .sensitive annotations
String interpolation always runsDeferred evaluation (performance)
Not in Console.appFull system integration

Pre-Generation Checks

1. Project Context Detection

  • Check deployment target (Logger requires iOS 14+ / macOS 11+)
  • Search for existing Logger/os.log usage
  • Identify source file locations (Sources/, App/, etc.)

2. Conflict Detection

Search for existing logging:

Glob: **/*Logger*.swift
Grep: "import OSLog" or "os_log"

If found, ask user:

  • Extend existing logging?
  • Replace with new implementation?
  • Create separate logger?

Modes of Operation

Mode 1: Audit

Find all print() statements and report:

Grep: print\s*\(

Report format:

  • File:line - print statement
  • Severity: Info/Warning/Error (based on context)
  • Suggested Logger level

Mode 2: Generate

Create logging infrastructure from scratch.

Mode 3: Migrate

Convert existing print() to Logger with suggestions.

Configuration Questions

Ask user via AskUserQuestion:

  1. Categories needed?

    • Network, Auth, UI, Data (defaults)
    • Custom categories?
  2. Include migration helpers?

    • Extension on String for quick migration
    • Temporary print-to-log bridge

Generation Process

Step 1: Create AppLogger.swift

Read template from templates/AppLogger.swift and customize:

  • Set subsystem from Bundle.main.bundleIdentifier
  • Add user-specified categories
  • Include usage examples in comments

Step 2: Determine File Location

Check project structure:

  • If Sources/ exists → Sources/Logging/AppLogger.swift
  • If App/ exists → App/Logging/AppLogger.swift
  • Otherwise → Logging/AppLogger.swift

Step 3: Provide Migration Guidance

Show examples of converting common print patterns:

// Before
print("User logged in: \(email)")

// After
AppLogger.auth.info("User logged in: \(email, privacy: .private)")

Output Format

After generation, provide:

Files Created

  • [Path]/Logging/AppLogger.swift

Integration Steps

  1. Import in files: import OSLog (not needed if using AppLogger)
  2. Replace print() calls with AppLogger.[category].level
  3. Add privacy annotations for sensitive data

Privacy Annotations Guide

  • .public - Safe to log (IDs, counts, non-sensitive)
  • .private - Redacted in release (emails, names)
  • .sensitive - Always redacted (passwords, tokens)

Console.app Usage

  1. Open Console.app
  2. Filter by subsystem: com.yourapp
  3. Filter by category: Network, Auth, etc.

Testing Instructions

  1. Add a test log: AppLogger.general.debug("Test log")
  2. Run app, check Xcode console
  3. Open Console.app, filter by your app's subsystem

References

  • logger-patterns.md - Best practices and privacy levels
  • migration-guide.md - Converting print() to Logger
  • templates/AppLogger.swift - Template file

Score

Total Score

60/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon