라떼군 이야기
Xcode 'Failed to initialize logging system' 에러와 앱 실행 속도 저하 해결 방법
Problem
Xcode에서 iOS 앱을 빌드하고 시뮬레이터나 디바이스에서 실행할 때, 콘솔에 Logging Error: Failed to initialize logging system. Log messages may be missing.이라는 에러 메시지가 출력되는 상황입니다. 단순히 로그가 보이지 않는 것을 넘어, 앱의 초기 구동 속도가 비정상적으로 느려지는(질문자의 표현에 따르면 ‘플로피 디스크를 읽는 것처럼’) 심각한 성능 저하가 동반되기도 합니다. Xcode 재설치나 OS 재설치로도 해결되지 않는 경우가 많아 개발자를 당황하게 만드는 문제입니다.
Background
이 문제는 Xcode의 디버거와 iOS의 Unified Logging System(os_log) 간의 통신 채널 초기화 과정에서 발생합니다. 최신 Xcode 버전들은 디바이스의 로그를 실시간으로 스트리밍하여 콘솔에 보여주는데, 이 스트리밍 연결이 제대로 맺어지지 않거나 타임아웃이 발생하면 초기화 실패 에러를 뱉습니다. 이때 시스템이 로그 연결을 재시도하거나 대기하는 과정에서 앱 실행이 지연되는 현상이 발생하며, 결과적으로 디버깅에 필요한 로그가 누락될 수 있습니다.
Solution
이 문제는 Xcode의 Scheme 설정에서 환경 변수(Environment Variables)를 추가하여 로깅 시스템의 동작 방식을 제어함으로써 해결할 수 있습니다.
방법 1: IDEPreferLogStreaming 설정 (권장)
에러 메시지에서 제안하는 가장 직접적인 해결책입니다. Xcode가 로그 스트리밍을 우선적으로 처리하도록 강제합니다.
- Xcode 상단 메뉴에서 Product > Scheme > Edit Scheme… (단축키
Cmd + <)을 선택합니다. - 왼쪽 사이드바에서 Run (Debug)을 선택합니다.
- Arguments 탭으로 이동합니다.
- Environment Variables 섹션에서
+버튼을 누릅니다. - 아래 값을 추가합니다.
Name: IDEPreferLogStreaming
Value: YES
이 설정을 적용한 후 앱을 다시 빌드하고 실행하면(Clean Build 권장), 로그 시스템 초기화 오류가 사라지고 실행 속도가 정상화됩니다.
방법 2: 로그 리다이렉션 정책 변경
첫 번째 방법으로 해결되지 않을 경우, 로그 출력 방식을 표준 입출력(stdio)으로 리다이렉션하거나 시스템 로그를 비활성화하는 방법입니다.
마찬가지로 Edit Scheme > Run > Arguments > Environment Variables에 다음 변수들을 추가합니다.
Name: IDELogRedirectionPolicy
Value: oslogToStdio
Name: OS_ACTIVITY_MODE
Value: disable
IDELogRedirectionPolicy:os_log메시지를 표준 입출력(Standard I/O)으로 돌려서 콘솔에 출력되게 합니다.OS_ACTIVITY_MODE:disable로 설정하면 잡다한 시스템 OS 로그 출력을 막아주어 콘솔을 깨끗하게 유지하고 성능을 높일 수 있습니다.
Deep Dive
OS_ACTIVITY_MODE 사용 시 주의사항
OS_ACTIVITY_MODE = disable 설정은 과거부터 Xcode 콘솔이 시스템 로그로 도배되는 것을 막기 위해 자주 사용되던 ‘치트키’입니다. 하지만 이 설정을 사용하면 실제 중요한 시스템 레벨의 에러 로그나 크래시 원인까지 숨겨질 수 있습니다. 따라서 IDEPreferLogStreaming=YES로 문제가 해결된다면, 굳이 OS_ACTIVITY_MODE를 비활성화하지 않는 것이 디버깅 관점에서 더 안전합니다.
Python/Swift 혼합 환경
질문 태그에 Python이 포함된 것으로 보아, 빌드 스크립트나 백엔드 로직에 Python이 관여된 경우일 수 있습니다. Python 스크립트 실행 시 로그가 버퍼링되어 늦게 뜨는 경우라면, Python 실행 옵션에 -u (unbuffered) 플래그를 추가하거나 환경 변수 PYTHONUNBUFFERED=1을 설정하는 것도 로그 누락 문제 해결에 도움이 됩니다.
Conclusion
Failed to initialize logging system 에러는 Xcode의 Scheme 설정에서 환경 변수를 추가하는 것만으로 간단히 해결할 수 있습니다. 우선적으로 IDEPreferLogStreaming=YES를 적용해 보고, 그래도 문제가 지속된다면 로그 리다이렉션 정책을 변경하는 방법을 시도해 보시기 바랍니다. 이를 통해 앱의 실행 속도를 회복하고 누락 없는 로그를 확인할 수 있습니다.