Console.app es una aplicación integrada de macOS para ver, filtrar y analizar registros del sistema y de usuario. Muestra mensajes del sistema de registro unificado de Apple (os_log) en tiempo real, permitiendo al desarrollador ver fallos, errores y mensajes de depuración sin necesidad de conectar Xcode. Según Apple Support, Console.app admite filtrado por subsistema, categoría, nivel de criticidad y proceso, así como la exportación de registros a .logarchive para compartirlos con un desarrollador. Es una herramienta indispensable para diagnosticar problemas en Mac: los filtros y las búsquedas guardadas permiten encontrar rápidamente errores en la aplicación entre miles de mensajes del sistema.
Puntos Clave
Console.app es una interfaz gráfica del sistema de registro unificado de Apple. Reemplazó la antigua aplicación Console (como parte de macOS) y proporciona acceso a todos los registros del sistema y las aplicaciones escritos a través de las API os_log, os_trace y syslog. Console.app se encuentra en /Applications/Utilities/ en cualquier Mac.
A diferencia de Xcode, que solo muestra registros de la aplicación lanzada desde el IDE, Console.app muestra registros de todos los procesos del sistema simultáneamente. Esto permite diagnosticar problemas que solo ocurren cuando la aplicación se inicia fuera de Xcode o en segundo plano. Console.app también muestra registros del sistema — kernel, launchd, WindowServer — lo que es útil para depurar problemas de bajo nivel.
Console.app no requiere instalar herramientas adicionales ni conexión a internet. Todos los datos se almacenan localmente en una base de datos .tracev3, y la aplicación funciona completamente sin conexión. Para ver registros de otro Mac o dispositivo iOS, use el comando log collect y luego abra el .logarchive en Console.app.
La interfaz de Console.app consta de tres áreas principales: la barra lateral con filtros, la tabla de mensajes y el panel de detalles del mensaje seleccionado. La barra lateral contiene las secciones Devices (fuentes de registros disponibles), Reports (informes de fallos del sistema) y Saved Searches (búsquedas guardadas).
La tabla de mensajes muestra una lista de registros con columnas: Time (marca de tiempo), Category (categoría), Level (nivel de criticidad — codificado por colores), Process (nombre del proceso), Message (texto del mensaje). Al hacer clic en cualquier mensaje se abre el panel de detalles que muestra el subsistema, el identificador de actividad, el ID del hilo y el texto completo con formato.
Console.app resalta los mensajes por color: rojo para Fault, amarillo para Error, azul para Debug, gris para Info. Los mensajes Default no se resaltan. Esto permite escanear visualmente el flujo de registros y notar al instante los eventos críticos.
// Registros que aparecerán en Console.app
import OSLog
let logger = Logger(
subsystem: "com.example.myapp",
category: "network"
)
logger.error("Connection failed: timeout")
logger.debug("Retry attempt 3 of 5")
// Estos mensajes son visibles en Console.app con el filtro "myapp"
El filtrado es la función principal de Console.app, que convierte un flujo de miles de mensajes por segundo en una lista legible. El campo de búsqueda en la parte superior admite condiciones AND: varias palabras separadas por un espacio muestran solo los mensajes que contienen todas las palabras. Por ejemplo, myapp error muestra todos los registros de la aplicación myapp con nivel Error.
Filtro de subsistema en la barra lateral permite seleccionar uno o varios subsistemas. Esta es la forma más rápida de aislar los registros de una aplicación específica de los mensajes del sistema. Filtro de categoría está disponible después de seleccionar un subsistema — muestra todas las categorías utilizadas por la aplicación seleccionada. Filtro de nivel restringe los mensajes por nivel de criticidad: se pueden mostrar solo errores o solo mensajes de depuración.
| Tipo de filtro | Ejemplo | Resultado |
|---|---|---|
| Texto | crash payment | Mensajes que contienen crash Y payment |
| Subsystem | com.example.myapp | Solo registros de la aplicación especificada |
| Level | Error + Fault | Solo errores y fallos críticos |
| Category | network | Mensajes con la categoría network |
| Tiempo | Última 1 hora | Mensajes solo del intervalo seleccionado |
El campo de búsqueda de Console.app admite regex mediante la construcción REGEX:pattern. Ejemplo: REGEX:error.*tim(e|out) encuentra todos los mensajes que contienen “error” y una palabra que comienza con “tim” y termina con “e” o “out”. Regex solo funciona en el campo de búsqueda, no en los filtros de subsistema o categoría.
Live es el modo en tiempo real en el que Console.app muestra nuevos mensajes a medida que aparecen en el búfer circular del kernel. Este modo está activo por defecto y es adecuado para depurar una aplicación en ejecución: inicie la aplicación y vea sus registros con un retardo de 1 a 5 segundos. El botón Live (o ⌘L) activa y desactiva el flujo.
Historical es el modo de visualización de archivos. Console.app almacena todos los mensajes de los últimos 7 a 14 días (configurable en el sistema) en una base de datos .tracev3. El modo Historical abre este archivo y permite buscar en él usando cualquier filtro, no solo el flujo actual. Esto es indispensable para analizar problemas que ocurrieron durante la noche o cuando la aplicación se ejecutaba sin estar conectada a un Mac.
El cambio entre modos se realiza mediante el botón Live en la barra de herramientas. Cuando Live está desactivado, Console.app muestra datos históricos. En este modo puede navegar por la línea de tiempo usando el calendario o los botones ← →. Los datos históricos solo están disponibles para los registros que se guardaron en disco — los mensajes que se sobrescribieron en el búfer circular no aparecen en el archivo.
Console.app admite la exportación de registros filtrados en varios formatos. File → Export → Save permite elegir el formato: .logarchive (formato nativo de Apple, incluye todos los metadatos), .txt (texto plano con columnas) y .json (datos estructurados con campos). Para adjuntar a un informe de error, use .logarchive — se puede abrir en cualquier Mac con Console.app.
Exportación desde un dispositivo iOS: a través de Xcode (Devices → Open Console) o mediante el comando log collect --device --output ./archive.logarchive en el terminal. Abra el .logarchive resultante en Console.app en un Mac — los registros provienen del dispositivo remoto, pero los filtros y la búsqueda funcionan igual que con los registros locales.
// Exportación de registros de dispositivo iOS mediante terminal
// log collect --device --output ./ios_crash.logarchive
// log show --subsystem com.example.app --last 1h --output json
// Ejemplo: exportar registros de la última hora
// log show --predicate 'subsystem == "com.example.myapp"' \
// --info --debug --last 1h --output json > logs.json
// Análisis de registros exportados en Swift
let jsonData = try Data(contentsOf: URL(fileURLWithPath: "logs.json"))
let decoded = try JSONDecoder()
.decode([LogEntry].self, from: jsonData)
.logarchive es el formato óptimo para enviar a un colega o adjuntar a un ticket de JIRA. El archivo contiene no solo mensajes, sino también subsistema, categoría, marcas de tiempo, ID de hilos y todos los metadatos. El tamaño del archivo es significativamente menor que los registros sin procesar gracias a la compresión de .tracev3. Antes de enviar, asegúrese de que los registros no contengan datos privados: use un filtro por subsistema de su aplicación para excluir los registros del sistema que puedan contener información confidencial de otros procesos.
Diagnóstico de fallos sin Xcode: si una aplicación falla al iniciarse fuera de Xcode, Console.app mostrará un mensaje Fault del proceso. Busque Reports → Crash Reports en la barra lateral — allí se muestran informes completos de fallos con firma y pila. Use el filtro de subsistema para su aplicación y establezca el nivel Error+Fault para ver todos los eventos críticos antes del fallo.
Console.app permite rastrear retrasos en la aplicación mediante marcas de tiempo. Si ha pasado más tiempo del esperado entre dos mensajes relacionados (por ejemplo, “solicitud enviada” y “respuesta recibida”), eso es una señal de un problema de rendimiento. Un filtro en el subsistema de su aplicación con el nivel Default mostrará todos los eventos clave con precisión de milisegundos.
Búsqueda de fugas de memoria: cuando ocurre una fuga de memoria, el sistema envía una advertencia de memoria a través de os_log con la categoría memory y el nivel Error. En Console.app, filtre por la palabra memory y seleccione su subsistema. Si la advertencia se repite cada 5 a 10 segundos, la aplicación está consumiendo memoria activamente. También puede activar los registros Debug para rastrear las asignaciones.
Depuración de solicitudes de red: si su aplicación usa os_log para eventos de red, Console.app mostrará todas las solicitudes y respuestas con tiempos. Un filtro category=network reduce el ruido. Si el tiempo entre una solicitud y una respuesta supera lo esperado, busque mensajes con level=Error — indicarán tiempos de espera agotados o errores de DNS.
// Estructura para analizar registros JSON de Console.app
struct LogEntry: Codable {
let timestamp: String
let eventMessage: String
let subsystem: String
let category: String
let messageType: UInt8
var level: String {
switch messageType {
case 1: return "Fault"
case 16: return "Error"
case 17: return "Debug"
default: return "Default"
}
}
}
Preguntas Frecuentes
Console.app se encuentra en la carpeta /Applications/Utilities/. Puede abrirla a través de Spotlight (⌘Espacio → Console) o mediante Finder → Aplicaciones → Utilidades → Consola. El icono de la aplicación es un globo de diálogo estilizado con un engranaje.
os_log enmascara cadenas y objetos como private por defecto. Console.app los muestra como <private> en modo producción. Para ver los valores reales, inicie la aplicación desde Xcode o active un perfil de recopilación con el nivel Debug para su subsistema.
En la barra lateral de Console.app, seleccione su subsistema (com.example.app) en la sección Devices → su dispositivo → Processes. Alternativamente, ingrese el nombre del proceso en el campo de búsqueda y seleccione Process: YourApp en la lista desplegable.
Por defecto, macOS almacena los registros en .tracev3 durante 7 a 14 días dependiendo del espacio disponible en disco. Cuando el espacio es escaso, los registros más antiguos se eliminan automáticamente. El período de retención se puede aumentar mediante sudo log config, pero no se recomienda para máquinas de producción.
Sí, conecte su dispositivo iOS a un Mac mediante USB, abra Xcode → Devices → seleccione el dispositivo → Open Console. Console.app mostrará los registros del dispositivo conectado en tiempo real. Para la recopilación sin conexión, use log collect en el terminal con la opción --device.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también