Como posso obter os logs do console no iOS Simulator?

241

Quero ver o que acontece no iOS Simulator se não estiver testando o aplicativo no Xcode.

Por exemplo, se eu abrir um link no simulador do Safari, veja o que acontece no console, ou se eu instalar um aplicativo Web, veja os links que estou pressionando no console.

Como posso fazer isso?

Eu quero vê-lo no Xcode ou no Terminal, mas não é um problema se eu precisar usar outro software.

user1335015
fonte
Veja também: stackoverflow.com/a/29310542/59087
Dave Jarvis

Respostas:

270

Simulador iOS> Barra de menus> Depuração> Abrir registro do sistema


Métodos antigos:

O iOS Simulator imprime seus logs diretamente no stdout, para que você possa ver os logs misturados com os logs do sistema.

Abra o terminal e digite: tail -f /var/log/system.log

Em seguida, execute o simulador.

EDITAR:

Isso parou de funcionar no Mavericks / Xcode 5. Agora você pode acessar os logs do simulador em sua própria pasta: ~/Library/Logs/iOS Simulator/<sim-version>/system.log

Você pode usar o Console.app para ver isso ou apenas fazer uma cauda (iOS 7.0.3 64 bits, por exemplo):

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

EDIT 2:

Eles agora estão localizados em ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

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

fbernardo
fonte
7
Isso ainda é preciso? Eu não estou vendo nada console.lognesses registros usando tailouConsole.app
Jeff
3
Não estou obtendo nenhum resultado no OSX 10.10. esses logs estão lá, mas meu simulador é a versão 8.1 e todos os logs são versões 7.1 *
skift 4/14/14
65
iOS Simulator> Menu Bar> Debug> Open System Log
pkamb
4
Obrigado! Seu ~ / Library / Logs / CoreSimulator / <simulator-hash> /system.log atualmente.
Calimarkus 29/04
6
A resposta do BYossarian é a "correta". : "-> iPhone Simulator -> nome do site Develop menu safari desktop que permite que você veja as iOS simulador de console Desenvolver"
snobojohan
222

Você pode visualizar o console do iOS Simulator via Safari na área de trabalho. É semelhante à maneira como você usa o Safari da área de trabalho para visualizar o console para dispositivos iOS físicos.

Sempre que o simulador estiver em execução e houver uma página da web aberta, haverá uma opção no menu Desenvolver no safari para desktop que permite ver o console do simulador iOS:

Desenvolver -> iPhone Simulator -> nome do site

Ben Jackson
fonte
31
Esta é a melhor resposta, assim como o console "real" do navegador e você pode executar comandos javascript rapidamente. Obrigado.
Jorge Fuentes González
4
Por que não vi isso documentado em nenhum outro lugar? Brilhante.
Nabo
4
O inspector web (quando acessado desta forma) aparece completamente em branco para mim (Mavericks Macbook Pro - todas as atualizações instaladas - Safari 7.0.5)
jamis0n
5
Safari parece detectar que o simultor está aberto, mas ele afirma "aplicações No inspecionável"
nickmorss
4
do que você está falando ... isso apenas abre o depurador da web para um site aberto em qualquer visualização da web do simulador. As mensagens do console que você vê lá são registradas no contexto javascript. Esses NÃO são os logs do simulador ios. Estou esquecendo de algo? Talvez a Apple mudou alguma coisa desde 2013, mas a partir de hoje esta resposta tem uma pontuação ridiculamente alta para o título da questão
Radu Simionescu
107

Existe uma opção no Simulador para abrir o console

Debug > Open System Log

ou use o

keyboard shortcut: ⌘/

Captura de tela do menu Simulador

Mark Bridges
fonte
90

iOS 8 e iOS 9

No iOS 8 e iOS 9, este local é agora:

~/Library/Logs/CoreSimulator/<DEVICE_CODE>

Portanto, o seguinte funcionará:

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

O DEVICE_CODEvalor pode ser encontrado através do seguinte comando do console:

instruments -s devices
viteinfinite
fonte
1
Para encontrar o identificador do dispositivo: no Xcode, clique em Windows> Dispositivos. Um dispositivo e o identificador serão exibidos no painel direito.
Neilco
3
Você pode digitar instruments -s devicesno console
viteinfinite
2
s / console / janela do terminal /
mharper
28

Você não deve confiar instruments -s. A ferramenta oficialmente suportada para trabalhar com simuladores a partir da linha de comando é xcrun simctl.

O diretório de log de um dispositivo pode ser encontrado com xcrun simctl getenv booted SIMULATOR_LOG_ROOT. Isso sempre estará correto, mesmo que o local seja alterado.

Agora que as coisas estão mudando os_log, é mais fácil abrir o Console.app no ​​Mac host. Os simuladores inicializados devem aparecer como uma fonte de log à esquerda, assim como dispositivos físicos. Você também pode executar comandos de log no simulador inicializado:

# 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`

Se você deseja usar as ferramentas Safari Developer (incluindo o console JS) com uma página da Web no Simulador : Inicie um dos simuladores, abra o Safari, vá para o Safari no seu mac e você verá Simulator no menu.

Você pode abrir um URL no Simulador, arrastando-o da barra de endereço do Safari e soltando na janela do Simulador. Você também pode usar xcrun simctl openurl booted <url>.

russbishop
fonte
Esta é a resposta correta agora no Xcode 9.3, iOS 11. Os locais mencionados em outras respostas não estão mais corretos.
Michael McGuire
Isso funcionou para mim no Xcode versão 10.1 (10B61), iOS 12.1 Simulator. Usando-o para visualizar a saída do console de aplicativos iOS no Emacs. Outras respostas funcionaram no passado, mas não mais.
precisa saber é o seguinte
Para mim, o que funcionou foi a ordem (eu tinha o Safari aberto antes do Simulador e, portanto, a entrada do menu não apareceu no Safari)!
Shmarkus 27/10/19
Onde você encontrou a documentação para o sinalizador "predicado"?
Hjulle
Novo nos simuladores do macOS 11 e iOS 14: log help predicatesfornecerá mais informações. O formato do predicado segue o NSPredicate.
russbishop
18

Se você estiver usando o Swift , lembre-se de que printlnapenas será impresso no log de depuração (que aparece na área de depuração do xCode). Se você deseja imprimir no system.log, precisará usá-lo NSLogcomo nos velhos tempos.

Em seguida, você pode visualizar o log do simulador através de seu menu, Debug> Open System Log ... (cmd + /)

cprcrack
fonte
12

rejeitar /var/log/system.lognão funcionou para mim. Encontrei meus logs usando Console.app. Eles estavam em

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

djibouti33
fonte
Este é um ótimo método para analisar os logs de, por exemplo, dias atrás.
Troy
10

Você pode usar o Consoleaplicativo (selecione seu dispositivo em Dispositivos) no seu Mac para ver uma mensagem de log que foi enviada usando NSLog(você não verá os logs da printfunção).

insira a descrição da imagem aqui

Observe que se você quiser ver um log WebView, useSafary -> Develop -> device

[Localizar registro de falhas]

yoAlex5
fonte
pressione cmd then space bar Digite " Console" pressione enter. Btw. essa deve ser a resposta correta hoje.
Solitário
7

XCode> 6.0 E iOS> 8.0 O script abaixo funciona se você tiver a versão XCode> 8.0

Eu uso o pequeno script abaixo para colocar os logs do simulador no console do 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

Você pode passar o tipo de simulador usado no Grep como argumento. Como mencionado nas postagens acima, existem comandos simctl e instruments para visualizar o tipo de simuladores disponíveis para uso, dependendo da versão do Xcode. Para exibir a lista de dispositivos / simuladores disponíveis.

xcrun instruments -s

OU

xcrun simctl list

Agora você pode passar o código do dispositivo OU o tipo de simulador como argumento para o script e substituir o "iPhone 6 (8.2 Simulator)" dentro do grep por US $ 1

Gurubaran
fonte
0

Posso abrir o log diretamente por meio do simulador do iOS: Debug -> Open System Log...Não tenho certeza de quando isso foi introduzido; portanto, ele pode não estar disponível para versões anteriores.

bompf
fonte
0

Você pode ver a janela do console do Simulador, incluindo o Safari Web Inspector e todas as Ferramentas de Desenvolvimento da Web usando o aplicativo Safari Technology Preview. Abra sua página no Safari no Simulator e vá para Safari Technology Preview> Develop> Simulator.

Ferramentas de Desenvolvimento Web

Mau
fonte
0

Sem NSLogou printconteúdo vai escrever para system.log, que pode ser aberto por SelectSimulator -> Debug -> Open System log no Xcode 11.

Eu descobri uma maneira, gravar logs em um arquivo e abrir o xx.logcom. Terminal.appEntão os logs serão apresentados emTerminal.app dinâmica.

Eu uso CocoaLumberjack conseguir isso.

PASSO 1:

Adicione DDFileLogger DDOSLoggere imprima o caminho dos logs. config()deve ser chamado quando App almoço.

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
}

PASSO 2:

Substitua printou NSLogpor DDLogXXX.

ETAPA 3:

$ tail -f {path of log}

Aqui, a mensagem será apresentada animadamente no Terminal.app.

Mais uma coisa. Se não houver logout de mensagens, verifique Environment Variables-> OS_ACTIVITY_MODENÃO DESATIVAR.

Jules
fonte