라떼군 이야기


Xcode "Failed to initialize logging system" 에러 및 앱 실행 지연 해결 방법

Problem

Xcode를 사용하여 iOS 앱을 개발하던 중, 콘솔 창에 다음과 같은 에러 메시지가 출력되는 상황입니다.

Logging Error: Failed to initialize logging system. Log messages may be missing. If this issue persists, try setting IDEPreferLogStreaming=YES in the active scheme actions environment variables.

이 메시지와 함께 앱의 빌드는 성공하지만, 시뮬레이터나 디바이스에서 앱이 실행되는 속도가 비정상적으로 느려지는 현상(마치 플로피 디스크를 읽는 듯한 속도)이 동반됩니다. OS나 Xcode를 재설치해도 문제가 해결되지 않아 개발 생산성에 큰 차질을 빚게 됩니다.

Background

이 문제는 Xcode의 디버거와 iOS(또는 시뮬레이터)의 통합 로깅 시스템(Unified Logging System) 간의 통신 초기화 실패로 인해 발생합니다.

최신 Xcode 버전들은 디바이스로부터 로그를 수집하기 위해 복잡한 스트리밍 프로토콜을 사용합니다. 특정 환경이나 Xcode 버전 업데이트 직후, 이 로깅 파이프라인 연결이 원활하지 않거나 타임아웃이 발생하면 Xcode는 로그 시스템 초기화에 실패했다는 메시지를 띄웁니다. 이때 시스템이 연결을 재시도하거나 폴백(fallback) 메커니즘을 작동시키는 과정에서 앱 실행 속도가 현저히 느려지는 부작용이 발생합니다.

Solution

이 문제는 Xcode의 Scheme(스키마) 설정에서 환경 변수(Environment Variables)를 추가하여 로깅 방식을 강제로 지정함으로써 해결할 수 있습니다.

방법 1: IDEPreferLogStreaming 설정 (권장)

에러 메시지에서 직접 제안하는 가장 확실한 해결 방법입니다. Xcode가 로그 스트리밍 방식을 선호하도록 강제합니다.

  1. Xcode 상단 메뉴에서 Product > Scheme > Edit Scheme… 을 클릭합니다 (단축키: Cmd + <).
  2. 왼쪽 사이드바에서 Run (Debug)을 선택합니다.
  3. 중앙 탭에서 Arguments를 클릭합니다.
  4. Environment Variables 섹션에 있는 + 버튼을 누릅니다.
  5. 아래 값을 입력하고 체크박스가 활성화되어 있는지 확인합니다.
Name: IDEPreferLogStreaming
Value: YES

설정 후 앱을 다시 빌드하고 실행(Clean Build Folder 권장: Cmd + Shift + K)하면 에러 메시지가 사라지고 실행 속도가 정상화됩니다.

방법 2: 로그 리다이렉션 정책 변경 (대안)

만약 첫 번째 방법으로 해결되지 않는다면, 로그 출력 정책을 표준 입출력(stdio)으로 변경하거나 OS 액티비티 모드를 비활성화하는 방법을 시도해 볼 수 있습니다. 같은 위치(Environment Variables)에 다음 변수들을 추가합니다.

Name: IDELogRedirectionPolicy
Value: oslogToStdio

또는 시스템 로그가 너무 많아 렉이 걸리는 경우, 불필요한 시스템 로그를 끄기 위해 다음을 추가할 수 있습니다.

Name: OS_ACTIVITY_MODE
Value: disable

주의: OS_ACTIVITY_MODEdisable로 설정하면 NSLogprint 문 외의 시스템 레벨 로그가 아예 나오지 않아, 추후 다른 디버깅 시 중요한 정보를 놓칠 수 있으므로 신중히 사용해야 합니다.

Deep Dive

왜 환경 변수로 해결하나요?

Xcode는 실행 시점(Runtime)에 xcodebuild나 디버거(LLDB)의 동작 방식을 제어하기 위해 다양한 비공개 환경 변수들을 지원합니다. IDEPreferLogStreaming은 Xcode 내부적으로 로깅 서브시스템을 초기화할 때 레거시 방식 대신 스트리밍 프로토콜을 우선시하도록 플래그를 세우는 역할을 합니다.

프로덕션 영향도

이 설정은 SchemeRun 액션에만 적용되므로, 실제 App Store에 배포되는 Archive 빌드나 사용자의 앱 성능에는 전혀 영향을 미치지 않습니다. 오직 개발 중인 디버깅 세션에만 영향을 주는 설정이므로 안심하고 적용해도 됩니다.

Xcode 버전 이슈

이 문제는 주로 Xcode 메이저 업데이트 직후(예: Xcode 14 -> 15) 자주 보고됩니다. 애플이 Xcode의 콘솔 출력 엔진을 개선하면서 발생하는 과도기적 버그인 경우가 많으므로, 추후 Xcode 업데이트를 통해 자연스럽게 해결될 수도 있습니다.

Conclusion

Failed to initialize logging system 에러는 Xcode 설정 문제로, 앱 코드 자체의 버그가 아닙니다. Edit Scheme 메뉴의 Environment VariablesIDEPreferLogStreaming=YES를 추가하는 것만으로 대부분 해결됩니다. 만약 문제가 지속된다면 IDELogRedirectionPolicy 설정을 통해 로그 출력 방식을 변경해 보시기 바랍니다.

References

Open to collaboration (협업 문의) Get in touch (연락하기) →