Xcode의 디버그 빌드에서 시뮬레이터 또는 실제 장치를 사용하는지 여부에 관계없이 NSLog, printf, fprintf assert 및 NSAssert 문이 콘솔에 표시됩니다.
이제 장치에서 릴리스 빌드를 실행하면 (예 : 테스트 플라이트 빌드를 보내고 내 iPhone에 크게 올리면 릴리스 빌드가됩니다.)이 중 어떤 것이 (있는 경우) 기록되고 있습니까?
그리고 어떻게 로그를 검색합니까?
NSLog는 실제로 릴리스 빌드에서 무언가를 출력합니까? 결정 요인은 무엇입니까? stdout 또는 stderr에 쓰고 있습니까? 장치 로그에 stderr 만 기록됩니까? 이것은 내가 fprintf를 사용해야 함을 의미합니까? 장치 로그에 기록 된 것이 있습니까? 그런 것조차 있습니까? 그렇다면 어떻게 픽업합니까?
누군가 상황을 명확히 할 수 있습니까?
답변
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName =[NSString stringWithFormat:@"%@.log",[NSDate date]];
NSString *logFilePath = [documentsDirectory stringByAppendingPathComponent:fileName];
freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
application:didFinishLaunchingWithOptions
앱 델리게이트 파일의 메서드 에이 코드 블록을 추가하기 만하면 모든 콘솔 로그 이벤트를 기록하는 iPhone의 앱 문서 디렉토리에 로그 파일이 생성됩니다. 모든 콘솔 이벤트를 보려면 iTunes에서이 파일을 가져와야합니다.
참고 : .plist 파일에 파일 Application supports iTunes file sharing
이 있고 YES
iTunes를 통해 액세스 할 수 있도록 설정되어 있는지 확인하십시오 .
로그 파일을 얻으려면 : iTunes를 실행하고 장치가 연결된 후 앱을 선택하고 앱을 선택합니다. Augument Document에서 파일을 가져옵니다. 그런 다음 디스크에 저장할 수 있습니다.
답변
Xcode 6.1.1에서는 다음을 수행하여 NSLog 출력을 볼 수 있습니다. 그러나 너무 오래 전의 로그를 볼 수 있는지 확실하지 않습니다. 나는 그것이 몇 시간까지 되돌아가는 것을 보았다.
어쨌든 다음 단계는 다음과 같습니다.
- Xcode에서 창-> 장치로 이동하십시오.
- 왼쪽 패널에서 장치를 선택하십시오.
- 아래 스크린 샷과 같이 작은 화살표를 클릭합니다.
답변
Swift 3.0에서는 Shyl의 코드가 다음과 같이 변경됩니다.
var paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let documentsDirectory = paths[0]
let fileName = "\(Date()).log"
let logFilePath = (documentsDirectory as NSString).appendingPathComponent(fileName)
freopen(logFilePath.cString(using: String.Encoding.ascii)!, "a+", stderr)
다른 모든 과정은 Shyl이 설명하는 것과 동일합니다.
앱 델리게이트 파일의 application : didFinishLaunchingWithOptions 메소드에이 코드 블록을 추가하면 모든 콘솔 로그 이벤트를 기록하는 iPhone의 앱 문서 디렉토리에 로그 파일이 생성됩니다. 모든 콘솔 이벤트를 보려면 iTunes에서이 파일을 가져와야합니다.
참고 : .plist 파일에서 파일이
Application supports iTunes
존재하고
file sharingYES
iTunes를 통해 액세스 할 수 있도록 설정되어 있는지 확인하십시오 .로그 파일을 얻으려면 : iTunes를 시작하고, 장치가 연결된 후 앱을 선택하고 앱을 선택합니다. Augument Document에서 파일을 가져옵니다. 그런 다음 디스크에 저장할 수 있습니다.
답변
NSLog는 프로덕션 릴리스에서 장치 로그에 기록되며 iPhone을 시스템에 연결하고 Organizer를 사용하여이를 확인할 수 있습니다. Organizer에서 iPhone을 선택하고 Device Logs를 클릭합니다. 로그에서 모든 NSLog 출력을 볼 수 있습니다.
답변
APPLE의이 링크는 매우 유익하고 완전합니다. 기기가 개발자 컴퓨터에 연결되어 있는지 여부에 관계없이 장치의 로그를 보거나 액세스 할 수있는 모든 옵션을 제공합니다.
https://developer.apple.com/library/ios/qa/qa1747/_index.html
답변
예, NSLog는 장치에서 출력합니다. Mac에 연결된 장치와 Xcode Organizer 도구를 사용하여 출력을 볼 수 있습니다.