O Beagle usa o sistema de log unificado recomendado pela Apple para fornecer mensagens de logs diferentes em estágios críticos de um fluxo Server Driven.
As mensagens de log fornecidas pelo Beagle iOS podem ser acessadas pelo:
Elas são divididas em 4 categorias:
parse
.É possível desabilitar as mensagens de log disparadas, dessa forma o Beagle não irá mais chamar a API de Log, seja ela a padrão ou customizada. Você precisa passar o atributo isLoggingEnabled
do BeagleDependencies
para false
.
As mensagens de log podem ser filtradas usando esses nomes como categorias e o identificador do pacote principal do aplicativo como subsistema.
Siga os passos abaixo para filtrar mensagens de log:
Passo 1: abra o Console App
;
Passo 2: selecione o device
no menu Devices;
Passo 3: insira os filtros na barra de busca, procure somente as mensagens de log
com a categoria Network
no subsistema br.com.zup.BeagleDemoApp
Passo 4: ao abrir a aplicação BeagleDemo
vemos duas mensagens de log com a categoria network
, uma mostrando que o Beagle fez uma requisição
e outra indicando a resposta
dessa requisição:
Passo 5: mensagens de erro
serão exibidas com um ponto amarelo no campo Type,
como mostrado abaixo:
Passo 6: ao selecionar a segunda mensagem de log
recebida com filtro Network
você verá a versão verbosa
dessa resposta:
Passo 7: o corpo da resposta contém a tela Server Driven
e todos os seus atributos e especificações podem ser acessados.
Para deixar o ambiente do Beagle aberto a modificações, a API de Logs padrão pode ser substituída por qualquer outra. Siga os passos abaixo fazer a substituição a API de logs:
Passo 1: implemente o protocolo BeagleLoggerType na classe que deseja utilizar como API de logs, você irá observar que é preciso implementar os métodos log(_ log: LogType)
e logDecodingError(type: String)
que são chamados internamente pelo Beagle sempre que uma mensagem precisa ser disparada:
class CustomLogger: BeagleLoggerType {
func log(_ log: LogType) {
print(log.message)
}
func logDecodingError(type: String) {
print(type)
}
}
Passo 2: nas configurações do Beagle de seu projeto atribua uma instância da classe à dependência logger
no BeagleDependencies
:
let dependencies = BeagleDependencies()
dependencies.logger = CustomLogger()
Beagle.dependencies = dependencies
Esta classe, na grande maioria dos casos, não deve ser utilizada pelo usuário. Esse é o objeto que internamente será armazenado no Beagle.dependencies.logger
ao invés do BeagleLogger
customizado pelo usuário.
A sua responsabilidade é de apenas repassar as chamadas pra classe do usuário caso o Beagle.dependencies.isLogginEnabled
for true
, caso contrário ela nem repassa a mensagem. Hoje ela está como pública somente para possibilitar o acesso à classe customizada do usuário via:
(Beagle.dependencies.logger as? BeagleLoggerProxy)?.logger
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.