En una compilación de depuración en Xcode, independientemente de si estoy usando el simulador o un dispositivo real, las declaraciones NSLog, printf, fprintf assert y NSAssert aparecen en la consola
Si ahora ejecuto una versión de lanzamiento en el dispositivo (digamos que envío una versión de vuelo de prueba y la agrancio en mi iPhone; esta será una versión de lanzamiento), ¿cuáles de estas (si las hay) se grabarán?
¿Y cómo recupero el registro?
¿NSLog realmente genera algo en la compilación de la versión? ¿Cuál es el factor determinante? ¿Si está escribiendo en stdout o stderr? ¿Solo se escribe stderr en el registro del dispositivo? ¿Significa esto que tengo que usar fprintf? ¿Se escribe ALGO en el registro del dispositivo? ¿Existe tal cosa? Si es así, ¿cómo recogerlo?
¿Alguien podría aclarar la situación?
Respuestas:
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);
Simplemente agregue este bloque de código en el
application:didFinishLaunchingWithOptions
método en el archivo delegado de la aplicación y creará un archivo de registro en el directorio de documentos de la aplicación en el iPhone que registra todos los eventos de registro de la consola. Necesita importar este archivo desde iTunes para ver todos los eventos de la consola.Nota: En el archivo .plist, asegúrese de que
Application supports iTunes file sharing
exista y esté configurado paraYES
que pueda acceder a través de iTunes.Para obtener archivos de registro: inicie iTunes, después de que su dispositivo se haya conectado, seleccione Aplicaciones - seleccione su Aplicación - en Augument Document obtendrá su archivo. Luego puede guardarlo en su disco
fuente
.log
archivo en el directorio de documentos, iOS escribe la salida de su consola allí?NSDocumentDirectory
es apropiado para archivos de registro; generalmente está destinado al contenido generado por el propio usuario, pero los archivos de registro son contenido de soporte de la aplicación, por lo tanto, tal vez pertenezcan alNSLibraryDirectory
subdirectorio / Logs.En Xcode 6.1.1, puede ver la salida de NSLog haciendo lo siguiente. Sin embargo, no estoy seguro de si le permite ver registros de tiempos muy lejanos. Solo lo he visto retroceder hasta un par de horas.
En cualquier caso, estos son los pasos:
fuente
En swift 3.0, el código de Shyl cambiará a,
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)
todos los demás procesos son los mismos que explica Shyl
fuente
/var/db/diagnostics/
. Vea aquí .NSLog está escrito en el registro del dispositivo en la versión de producción y puede verificar esto conectando su iPhone a su sistema y usando Organizador. Seleccione su iPhone en el organizador, haga clic en Registros del dispositivo. Vería todas las salidas de NSLog en el registro.
fuente
Encontré este enlace de APPLE muy informativo y completo. Prácticamente le brinda todas las opciones para ver o acceder a los registros del dispositivo, ya sea que estén conectados o no a su máquina de desarrollo.
https://developer.apple.com/library/ios/qa/qa1747/_index.html
fuente
Sí, salidas NSLog en el dispositivo. Puede ver sus salidas con su dispositivo conectado a su Mac y usando la herramienta Xcode Organizer.
fuente
Si usa Testflight SDK, puede capturar todos los registros con su función de Registro remoto .
fuente
Sé que este es un hilo antiguo, pero también puede tener acceso a los registros del dispositivo que van a:
Configuración -> Privacidad -> Análisis -> Datos
Espero que esto ayude
Saludos
fuente
Creo que en Xcode 9.3 la pantalla de registro del dispositivo se ha movido a una nueva ubicación. Por favor, consulte el siguiente enlace.
Obtenga registros de dispositivos en tiempo de ejecución en Xcode
fuente