¿Cómo puedo obtener los registros de la consola desde el simulador de iOS?

241

Quiero ver qué sucede en el simulador de iOS si no estoy probando la aplicación en Xcode.

Por ejemplo, si abro un enlace en el simulador de Safari, veo lo que sucede en la consola, o si instalo una aplicación web, veo los enlaces que estoy presionando en la consola.

¿Cómo puedo hacer esto?

Quiero verlo en Xcode o Terminal, pero no es un problema si necesito usar otro bit de software.

usuario1335015
fuente
Ver también: stackoverflow.com/a/29310542/59087
Dave Jarvis el

Respuestas:

271

Simulador de iOS> Barra de menú> Depurar> Abrir registro del sistema


Maneras viejas:

iOS Simulator imprime sus registros directamente en stdout, para que pueda ver los registros mezclados con los registros del sistema.

Abra la Terminal y escriba: tail -f /var/log/system.log

Luego ejecuta el simulador.

EDITAR:

Esto dejó de funcionar en Mavericks / Xcode 5. Ahora puede acceder a los registros del simulador en su propia carpeta: ~/Library/Logs/iOS Simulator/<sim-version>/system.log

Puede usar Console.app para ver esto, o simplemente hacer una cola (iOS 7.0.3 64 bits por ejemplo):

tail -f ~/Library/Logs/iOS\ Simulator/7.0.3-64/system.log

EDITAR 2:

Ahora se encuentran en ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

tail -f ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

fbernardo
fuente
8
¿Sigue siendo exacto? No veo nada de console.logeste registro usando tailoConsole.app
Jeff
3
Tampoco obtengo ningún resultado en OSX 10.10. esos registros están ahí, pero mi simulador es la versión 8.1 y todos los registros son versiones 7.1 *
skift
65
Simulador de iOS> Barra de menú> Depurar> Abrir registro del sistema
pkamb
44
¡Gracias! Su ~ / Library / Logs / CoreSimulator / <simulator-hash> /system.log en estos días, sin embargo.
calimarkus
66
La respuesta de BYossarian es la "correcta". "Desarrolle el menú en el safari de escritorio que le permite ver la consola del simulador de iOS: Desarrollar -> Simulador de iPhone -> nombre del sitio"
snobojohan
224

Puede ver la consola para el simulador de iOS a través de Safari de escritorio. Es similar a la forma en que usa Safari de escritorio para ver la consola para dispositivos iOS físicos.

Siempre que el simulador se esté ejecutando y haya una página web abierta, habrá una opción en el menú Desarrollar en el safari de escritorio que le permite ver la consola del simulador de iOS:

Desarrollar -> iPhone Simulator -> nombre del sitio

Ben Jackson
fuente
31
Esta es la mejor respuesta, ya que es la consola "real" del navegador y puede ejecutar comandos de JavaScript sobre la marcha. Gracias.
Jorge Fuentes González
44
¿Por qué no he visto esto documentado en ningún otro lugar? Brillante.
Nabo
44
El inspector web (cuando se accede de esta manera) aparece completamente en blanco para mí (Mavericks Macbook Pro - todas las actualizaciones instaladas - Safari 7.0.5)
jamis0n
55
Safari parece detectar que el simultor está abierto, pero dice "No hay aplicaciones
inspeccionables
44
de qué estás hablando ... esto simplemente abre el depurador web para un sitio web abierto en cualquier vista web del simulador. Los mensajes de la consola que ve allí se registran en el contexto de JavaScript. Esos NO son los registros del simulador de ios. ¿Me estoy perdiendo de algo? Tal vez Apple cambió algo desde 2013, pero a partir de hoy esta respuesta tiene un puntaje ridículamente alto para el título de la pregunta
Radu Simionescu,
107

Hay una opción en el simulador para abrir el console

Debug > Open System Log

o usa el

keyboard shortcut: ⌘/

Captura de pantalla del menú del simulador

Mark Bridges
fuente
90

iOS 8 y iOS 9

En iOS 8 e iOS 9, esta ubicación ahora es:

~/Library/Logs/CoreSimulator/<DEVICE_CODE>

Entonces, lo siguiente funcionará:

tail -f ~/Library/Logs/CoreSimulator/<DEVICE_CODE>/system.log

El DEVICE_CODEvalor se puede encontrar a través del siguiente comando de consola:

instruments -s devices
viteinfinite
fuente
1
Para encontrar el identificador del dispositivo: en Xcode, haga clic en Windows> Dispositivos. Un dispositivo y el identificador se mostrarán en el panel de la derecha.
neilco
3
Puede escribir instruments -s devicesen la consola
viteinfinite
2
s / console / terminal window /
mharper
Esto no funcionó para mí. xcrun simctl spawn booted log stream --level=debug | grep App_Debug_Stringtrabajó.
rustyMagnet
29

Usted no debe confiar en instruments -s. La herramienta oficialmente compatible para trabajar con simuladores desde la línea de comandos es xcrun simctl.

El directorio de registro de un dispositivo se puede encontrar con xcrun simctl getenv booted SIMULATOR_LOG_ROOT. Esto siempre será correcto incluso si la ubicación cambia.

Ahora que las cosas se están moviendo os_log, es más fácil abrir Console.app en la Mac host. Los simuladores iniciados deben aparecer como una fuente de registro a la izquierda, al igual que los dispositivos físicos. También puede ejecutar comandos de registro en el simulador arrancado:

# os_log equivalent of tail -f
xcrun simctl spawn booted log stream --level=debug

# filter log output
xcrun simctl spawn booted log stream --predicate 'processImagePath endswith "myapp"'
xcrun simctl spawn booted log stream --predicate 'eventMessage contains "error" and messageType == info'

# a log dump that Console.app can open
xcrun simctl spawn booted log collect

# open location where log collect will write the dump
cd `xcrun simctl getenv booted SIMULATOR_SHARED_RESOURCES_DIRECTORY`

Si desea usar las herramientas de desarrollador de Safari (incluida la consola JS) con una página web en el simulador : Inicie uno de los simuladores, abra Safari, luego vaya a Safari en su Mac y debería ver Simulador en el menú.

Puede abrir una URL en el simulador arrastrándola desde la barra de direcciones de Safari y soltándola en la ventana del simulador. También puedes usar xcrun simctl openurl booted <url>.

obispo ruso
fuente
Esta es la respuesta correcta ahora a partir de Xcode 9.3, iOS 11. Las ubicaciones mencionadas en otras respuestas ya no son correctas.
Michael McGuire
Esto funcionó para mí en Xcode Versión 10.1 (10B61), iOS 12.1 Simulator. Utilizándolo para ver la salida de la consola de la aplicación iOS en Emacs. Otras respuestas funcionaron en el pasado, pero ya no.
tboyce12
Para mí, lo que funcionó fue el orden (tenía Safari abierto antes del Simulador y, por lo tanto, la entrada del menú no apareció en Safari).
Shmarkus
¿Dónde encontró la documentación para la bandera "predicado"?
Hjulle
Nuevo en simuladores macOS 11 e iOS 14: log help predicatesle dará más información. El formato del predicado sigue NSPredicate.
obispo
18

Si está utilizando Swift , recuerde que printlnsolo se imprimirá en el registro de depuración (que aparece en el área de depuración de xCode). Si desea imprimir en system.log, debe usarlo NSLogcomo en los viejos tiempos.

Luego puede ver el registro del simulador a través de su menú, Depuración> Abrir registro del sistema ... (cmd + /)

cprcrack
fuente
12

La cola /var/log/system.logno funcionó para mí. Encontré mis registros usando Console.app. Ellos estaban en

~/Library/Logs/iOS Simulator/{version}/system.log

djibouti33
fuente
Este es un gran método para mirar hacia atrás en los registros, por ejemplo, hace días.
Troy el
10

Puede usar la Consoleaplicación (seleccione su dispositivo en Dispositivos) en su Mac para ver un mensaje de registro que se envió usando NSLog(no verá registros de la printfunción).

ingrese la descripción de la imagen aquí

Tenga en cuenta que si desea ver un registro WebView, debe usarSafary -> Develop -> device

[Buscar registro de bloqueo]

yoAlex5
fuente
presione cmd then space bar Tipo " Console" presione enter. Por cierto. esa debería ser la respuesta correcta hoy.
Solo el
7

XCode> 6.0 Y iOS> 8.0 El siguiente script funciona si tiene una versión XCode> 8.0

Utilizo el pequeño script a continuación para seguir los registros del simulador en la consola del sistema.

#!/bin/sh
sim_dir=`xcrun instruments -s | grep "iPhone 6 (8.2 Simulator)" | awk {'print $NF'} | tr -d '[]'`
tail -f ~/Library/Logs/CoreSimulator/$sim_dir/system.log

Puede pasar el tipo de simulador utilizado en Grep como argumento. Como se mencionó en las publicaciones anteriores, hay comandos de simctl e instrumentos para ver el tipo de simuladores disponibles para su uso según la versión de Xcode. Para ver la lista de dispositivos / simuladores disponibles.

xcrun instruments -s

O

xcrun simctl list

Ahora puede pasar el código del dispositivo o el tipo de simulador como argumento para el script y reemplazar el "iPhone 6 (8.2 Simulator)" dentro de grep por $ 1

Gurubaran
fuente
0

Puedo abrir el registro directamente a través del simulador de iOS: Debug -> Open System Log...no estoy seguro de cuándo se introdujo, por lo que podría no estar disponible para versiones anteriores.

bompf
fuente
0

Puede ver la ventana de la consola del simulador, incluido Safari Web Inspector y todas las herramientas de desarrollo web mediante la aplicación Safari Technology Preview. Abra su página en Safari en el simulador y luego vaya a Vista previa de la tecnología Safari> Desarrollar> Simulador.

Herramientas de desarrollo web

Mau
fuente
0

No NSLogo printse escribirá en el contenido system.log, que puede abrirse con Seleccionar Simulator -> Debug -> Open System logen Xcode 11.

Descubro un camino, escribo registros en un archivo y lo abro xx.logcon. Terminal.appLuego los registros se presentarán en Terminal.appvivo.

Yo uso CocoaLumberjack para lograr esto.

PASO 1:

Agregar DDFileLogger DDOSLoggere imprimir ruta de registros. config()debe llamarse cuando la aplicación almuerzo.

static func config() {
    #if DEBUG
    DDLog.add(DDOSLogger.sharedInstance) // Uses os_log
    let fileLogger: DDFileLogger = DDFileLogger() // File Logger
    fileLogger.rollingFrequency = 60 * 60 * 24 // 24 hours
    fileLogger.logFileManager.maximumNumberOfLogFiles = 7
    DDLog.add(fileLogger)
    DDLogInfo("DEBUG LOG PATH: " + (fileLogger.currentLogFileInfo?.filePath ?? ""))
    #endif
}

PASO 2:

Reemplazar printo NSLogcon DDLogXXX.

PASO 3:

$ tail -f {path of log}

Aquí, el mensaje se presentará en Terminal.app animado.

Una cosa más. Si no hay ningún mensaje de desconexión , asegúrese de que Environment Variables-> OS_ACTIVITY_MODENO ES deshabilitado.

Jules
fuente