모든 NSLog 출력을 리디렉션하여 앱 내부의 UITextView에있는 모든 로그를 볼 수 있습니다 (디버그 목적으로, 나중에 TestFlight를 사용하여 모든 것을 기록 할 수 있음). 내가 소유하지 않은 프레임 워크에서 로그를 잡아 내고 싶어서 잘 알려진 DLog를 사용할 수 없습니다.장치에서 NSLog가 무시되었습니다.
stderr을 파이프로 리디렉션하고이 파이프에서 읽음으로써이 작업을 수행합니다. 어쨌든, 이것은 Xcode 내에서 앱을 시작할 때 시뮬레이터와 장치에서 잘 작동합니다. 그러나 앱이 기기에서 "손으로"실행되면 이는 작동하지 않습니다.
NSLog 호출은 장치에 아무런 영향을 미치지 않습니다. 파이프에서 아무 것도 읽지 않습니다. 그러나 내가 stderr에 수동으로 쓰는 경우 : fprintf(stderr, "test")
파이프에서 읽을 수 있기 때문에 문제는 stderr가 아닌 NSLog 함수와 같습니다.
기기에서 아무 것도 작동하지 않는 이유는 무엇입니까? 거기에 장치에서 stderr에 쓸 수있는 방법이 있습니까?
장치에서 NSLog를 사용할 수없는 경우 외부 프레임 워크에서 로그를 수집하는 다른 방법이 있습니까?
감사합니다.
I는 디버거을 실행하지 않는 것 NSLog 출력 처리되지 않도록 인상했다. 분명히 앱이 손으로 시작될 때 디버거가 없지만 시뮬레이터에서 시작될 때가 있습니다. NSLog가 차지하는 코드 행은 생산 환경, 즉 디바이스에서 실행할 때 효과적으로 무시됩니다. –
Organizer를 사용하여 장치를보고 NSLog 출력에 액세스 할 수 있습니다. –
@ DanielHanly. 감사합니다. 장치가 "디버그 환경"에서 실행되고 있다고 생각하도록 속일 수있는 방법이 있기를 바랍니다. 그렇다면 TestFlight에서 일어난 일을 어떻게 기록해야합니까? Hot Licks : 글쎄, 나는 일종의 실시간 로깅을 원하고, 또한 TestFlight에 로그를 보내야한다. – user1504454