• Feed
  • Explore
  • Ranking
/
/
    🦅 Swift

    [Swift] os_log 사용하기

    Swiftios
    지
    지성
    2025.02.18
    ·
    3 min read

    os_log?

    Swift에서 로그를 출력할 때 print나 NSLog를 자주 사용하지만,

    • print: 디버깅 용도로는 좋지만 릴리즈 빌드에서도 노출되어 보안에 취약함

    • NSLog: 시스템 리소스를 많이 사용하고, 성능이 저하될 수 있음

    이를 대체할 수 있는 게 바로 os_log이다.

    • 애플에서 권장하는 로그 프레임워크

    • 빠르고 효율적이며, 릴리즈 빌드에서 민감한 데이터 보호 가능

    사용 방법

    1. 기본 사용법

      import os
      
      os_log("로그 메시지 작성")
    2. 로그 레벨 지정하기

      os_log("정보 로그", type: .info)
      os_log("디버그 로그", type: .debug)
      os_log("에러 로그", type: .error)
      os_log("기본 로그", type: .default)
      • .default: 일반적인 로그

      • .info: 정보성 로그

      • .debug: 디버깅용 로그

      • .error: 에러 로그

    3. 변수 포함하기

      let userID = 1234
      os_log("사용자 ID: %d", userID)
      • %d: 정수

      • %s: 문자열

      • %f: 실수

      • os_log는 문자열 보간(\(value))을 직접 지원하지 않아 포맷 지정자를 사용해야 함

    4. 민감한 데이터 보호

      os_log("비밀번호: %{private}s", "1234")
      • %{private}s: 릴리즈 빌드에서는 숨겨지고, 디버그 모드에서만 출력

      • 보안이 필요한 데이터는 반드시 private 옵션을 사용

    5. 커스텀 로그 객체 생성

      let log = OSLog(subsystem: "com.myapp.booklog", category: "network")
      os_log("네트워크 요청 시작", log: log, type: .info)
      • subsystem: 앱 번들 ID를 넣는 것이 일반적

      • category: 로그의 분류를 지정(ex. network, UI, CoreData 등)

      • Console: 앱에서 카테고리별 필터링 가능 -> 디버깅 시 유용함







    - 컬렉션 아티클