[Swift] OSLog 시스템 로그 함수

Bibi·2022년 3월 13일
0

[Swift] OSLog 시스템 로그 함수, Logger

https://zeddios.tistory.com/979

https://velog.io/@ryan-son/Swift-통합-로깅-시스템으로-로깅-해보자-OSLog

os_log

: 애플이 권장하는 로깅 방식이다.

  • 통합 로깅 시스템 unified logging system
    • 모든 수준(log level)의 시스템에서 메시징을 캡처할 수 있는 효율적인 단일 고성능 API
    • 로그 데이터를 메모리와 디스크의 데이터 저장소에 저장
    • iOS 10.0, macOS 10.12, tvOS 10.0, watchOS 3.0 이상에서 사용 가능
    • os_log 함수 호출로 통합 로깅 시스템에 메시지를 보낼 수 있다.
  • Log Level
    • Debug : 디버깅 시 사용하는 유용한 정보
    • Info : 문제 해결에 활용할 수 있는, 도움이 되지만 필수적이지 않은 정보
    • Notice(기본값) : 문제 해결에 필수적인 정보. failure를 초래할 수 있는 정보
    • Error : 코드 실행 중 나타난 에러.
    • Fault : 코드 속의 결점 및 버그 관련 정보.
  • OSLog 프레임워크 임포트 필요 - import OSLog
    • 프로그래머가 로그를 읽을 수 있게 해 주는 프레임워크

os_log 사용하기

import OSLog

// os_log(_:) : 로그메시지만 출력
os_log("log message")

// os_log(_:type:) : 로그메시지와 에러 수준 지정
os_log("log message", type: .default)

// os_log(_:log:_:) : 에러 수준 지정 가능
os_log(.error, log: .default, "log message")
os_log(.fault, log: .default, "log message")

// subsystema과 카테고리 지정하기
let zeddOsLog = OSLog(subsystem: "com.zedd.os-log-Test", category: "UI")
    os_log("UI 로그", log: zeddOsLog)

// 익스텐션을 통해 원하는 subsystem과 카테고리로 메시지 로깅 가능
extension OSLog {
    private static var subsystem = Bundle.main.bundleIdentifier!
    static let ui = OSLog(subsystem: subsystem,  category: "UI")
    static let data = OSLog(subsystem: subsystem, category: "Data")  
}

os_log(.fault, log: .data, OSLogMessage.logMessage)

// 로그 메시지로 문자열 보간법 대신, 미리 선언해 우회적으로 사용 가능
// 메시지 타입으로 StaticString을 요구하기 때문
let message = "new log message with name \(user.name)"
os_log(.info, log: .network, "%@", message)

Logger
logger.info

0개의 댓글