Logging¶
Zayt usa Structlog para logging e provê algumas facilidades sobre ele para tornar seu uso próximo de outros frameworks como Spring Boot.
Ele é integrado com o logging da biblioteca padrão, então bibliotecas que a usam são logadas através do Structlog. Ele também habilita filtragem por nome do logger usando a biblioteca padrão.
Porque Structlog?¶
Atualmente, é muito provável que sua aplicação esteja implantada em uma nuvem e seus logs sejam enviados para um agregador como Graylog. Portanto, um formato de logging estruturado parece ser a escolha mais lógica.
Para mais informação sobre porque utilizar logging estruturado, verifique a documentação do Structlog
Configuração de logging¶
Logging é configurado no arquivo de configuração do zayt:
settings = {
"logging": {
"root": "WARNING", # (1)
"level": { # (2)
"application": "INFO",
"zayt": "DEBUG",
},
"format": "json", # (3)
"setup": "zayt.logging.setup", # (4)
}
}
Nota
Nível de log to logger root.
Mapeamento de nomes de logger para níveis de log.
Format do log. Possíveis valores são “json”, “logfmt”, “keyvalue” e “console”.
Função setup para configurar o logging.
A configuração format define qual renderer será utilizado. Os possíveis valores mapeiam para:
valor |
renderer |
|---|---|
|
|
|
|
|
|
|
|
Se não for definido, format tem o valor padrão de "logfmt" se sys.stderr.isatty() == False, ou "console" caso contrário. Isto é feito para utilizar ConsoleRenderer durante o desenvolvimento e LogfmtRenderer quando implantado em produção.
Configuração manual do logger¶
Se você precisa de controle total de como o Structlog é configurado, você pode fornecer uma função de configuração do logger. Você precisa apenas referenciá-la no arquivo de configuração:
settings = {
"logging": {
"setup": "application.logging.setup",
}
}
import structlog
from zayt.configuration import Settings
def setup(settings: Settings):
structlog.configure(...)
A função de configuração recebe um parâmetro do tipo zayt.configuration.Settings, de forma que você pode acesar todas as configurações.