Loging Python JSON

Loging Python JSON
O registro nos permite acompanhar os eventos que acontecem enquanto determinado software está funcionando. Quando o software falha e não temos nenhum registro de registro, existem muito poucas possibilidades que descobriríamos a raiz do problema. Mas com os registros de registro, podemos manter todas as falhas. Embora, quando um sistema precisa analisar os toros que não seguem um padrão ou módulo predefinidos, as coisas ficam complicadas. Python, portanto, contém JSON, que organiza os dados de maneira formatada usando objetos que aderem a um padrão especificado. O Python-Json-Logger é o módulo de log Python padrão que exibe os eventos de log como um objeto JSON. O módulo JSON Logger melhora a legibilidade da máquina de nossos logs e impede a criação dos analisadores exclusivos para entradas do tipo syslog.

Como usar o log de python json?

A biblioteca “Python_Json_Logger” é necessária para os logs no formato JSON. Podemos instalar esta biblioteca Python com o comando pip. A seguir é o comando para instalá -lo. Quando é instalado, o prompt também exibe a mensagem de confirmação com a versão recente da biblioteca.

PIP Instale Python-Json-Logger

Exemplo 1:

O uso básico do módulo de registro é relativamente direto e pode ser usado para registrar os eventos em arquivos. Aqui, primeiro fornecemos a simples implementação do log de python. Criamos o log e configuramos -o usando o método BasicConfig (). Este método leva o nome do arquivo em que os logs são criados porque o arquivo fornecido está aberto no modo "W". O formato também está definido para os logs. Em seguida, declaramos o objeto "Logger" onde com o método getLogger (). Retornamos o madeireiro com o nome atribuído.

Em seguida, o nível do Logger é ajustado através do método Setlevel () para servir como o limite de rastreamento para a depuração, baseado nos valores numéricos que são alocados a cada nível. Depois disso, implantamos alguns métodos de classe de logger, incluindo a mensagem específica como um parâmetro. O método Debug () imprime a mensagem de depuração. O método info () gera uma mensagem que está conectada a este logger com o nível de informação. Então, o método Critical () mostra o nível crítico do madeireiro fornecido. Os métodos Warning () e Error () mostram o aviso para o madeireiro e qualquer exceção que seja levantada pelo Logger.

importar log
exploração madeireira.BasicConfig (FileName = "NewFile.registro",
formato = ' %(asctime) s %(mensagem) s', filemode = 'w')
logger = log.getLogger ()
Logger.Setlevel (log.DEPURAR)
Logger.Debug ("Declaração de Debug Safe")
Logger.info ("é uma informação")
Logger.Aviso ("Gera aviso")
Logger.erro ("O erro ocorre eu.e quando dividir por zero ")
Logger.crítico ("conexão com a internet é lenta")

O programa cria um arquivo com o nome dado. Quando abrimos o arquivo, ele contém as informações em cada método de logger especificado, listado no seguinte:

Exemplo 2:

No programa acima mencionado, temos a funcionalidade de log Python. Agora, temos um programa em que a biblioteca Python JSON Logger é utilizada para armazenar os logs no formato JSON usando os métodos de registro integrado. Aqui, começamos o código de log Python JSON, inserindo o módulo de log e o módulo jsonlogger para a classe Pythonjsonlogger. Depois disso, declaramos o objeto "formatador" que é definido com o método jsonformatter () para obter os resultados no formato JSON. Em seguida, definimos o objeto "json_handler" para invocar o método FileHandler () que fornece o arquivo JSON fornecido.

Em seguida, definimos o formato para o arquivo json usando o método setFormatter () em que o objeto formatador é passado como entrada. Em seguida, obtemos o objeto do Método GetLogger (). O "json_handler" é adicionado através do método addHandler (). No final, o madeireiro.Error () Método que encontra qualquer erro do registro no formato JSON é levantado aqui.

importar log
De Pythonjsonlogger importar jsonlogger
Formatter = JsonLogger.Jsonformatter ()
json_handler = log.FileHandler (FileName = 'NewLog.JSON ')
json_handler.setFormatter (formatador)
logger = log.getLogger ('my_json')
Logger.addHandler (json_handler)
Logger.erro ('um erro encontrado', extra = 'tipo': 'fatal')

O seguinte log JSON é criado no “NewLog.Arquivo JSON ”Quando o abrimos do módulo JsonLogger de Python:

Exemplo 3:

O formato básico de log JSON é dado no exemplo anterior. Agora, demonstramos a exceção e o rastreamento da formatação do log no JSON usando o módulo JsonLogger. Tracebacks fornecem informações específicas sobre a falha do programa, portanto, registrá -los é frequentemente valioso. Podemos usar o registro.Método de exceção, que é um módulo de registro de python embutido para registrar os erros e adicionar nossas mensagens de erro personalizadas.

Além disso, o log.Método Exception () tem um erro de gravidade padrão. Primeiro, usamos a declaração de importação de carregar o módulo de registro e o módulo jsonlogger para logs JSON. Depois disso, criamos a instância do log usando o método getLogger () para acessar o logger. A exceção de log e o Traceback são tratados e gerados no “BadCalCulationDemo.arquivo json ”.

Em seguida, fornecemos o método jsonformatter () no objeto "formatador" para formatar os logs na estrutura json e definir o formatador fornecido com o setFormatter. Em seguida, adicionamos o manipulador de “LogHandlerjson” criado ao método addHandler (). O bloco Try-Except é empregado para capturar os troncos do seguinte traceback. Aqui, temos uma declaração de tentativa em que o número inteiro é dividido pelo valor da string, que é uma prática de cálculo ruim. A declaração exceto capta esta exceção de log no registro.Exception () que imprime a mensagem fornecida junto com um relatório Traceback no formato JSON para o BadCalCulationDemo.arquivo json.

importar log
De Pythonjsonlogger importar jsonlogger
MyLogger = log.getLogger ()
LogHandlerjson = log.FileHandler ("BadCalCulationDemo.JSON ")
Formatter = JsonLogger.Jsonformatter ()
LogHandlerjson.setFormatter (formatador)
MyLogger.AddHandler (LogHandlerjson)
tentar:
1 / "leite"
exceto:
exploração madeireira.Exceção ('Seu cálculo foi ruim')

Quando o script é executado, um objeto JSON rigoroso aparece no BadCalCulationDemo.Conteúdo do arquivo json. A seguir, a imagem do Badmathdemo.Arquivo JSON que exibe a mensagem de erro com as informações de rastreamento:

Exemplo 4:

Os atributos com caracteres específicos de JSON podem fazer com que o objeto JSON se torne corrupto. Podemos personalizar o sistema de registro exclusivo usando a classe formatadora e permitir que o módulo JSON escape adequadamente a todos os atributos. Aqui, fornecemos o registro JSON personalizado, que fornece os atributos adicionais para os eventos dos logs. Inserimos os módulos JSON, Loging e SYS para criar os eventos de log do nosso sistema. Em seguida, estabelecemos a classe "jsonformatter", que leva o registro de entrada e o formatador como parâmetros. Depois disso, criamos os atributos "Self" e "Records" para esta aula.

Em seguida, geramos o objeto "extra" em que o método getAtTr () é chamado para acessar o registro.Atributos de Logrecord no formato JSON. O registro JSON é usado para obter tempo, nome de nível, nome do arquivo, número da linha e mensagem fornecida para o log do sistema.

Além disso, também extraímos detalhes adicionais sobre os registros do sistema. Então, usamos o JSON.Método Dump () em que o objeto Python “json_record” é passado para conversão no objeto JSON. Os atributos JSON do Python estão configurados na definição do método jsonConfig (). A técnica if-else é usada para criar o manipulador personalizado, que fornece os logs no arquivo especificado ou no formulário do fluxo de saída para o console. O registrador de raiz está configurado com o manipulador personalizado. Em seguida, invocamos o método JSONCONFIG () e o método de log que fornece o nível das mensagens de log na forma de JSON.

importar json, log, sistemas
Classe Jsonformatter (registro.Formatador):
def format (self, registro):
extra = getattr (registro, "__dict__", )
json_record =
"Time": extra.Get ("definido"),
"Nível": getattr (registro, "namename", nenhum),
"Arquivo": getattr (registro, "nome do arquivo", nenhum),
"Linha": getattr (registro, "lineno", nenhum),
"Msg": getattr (registro, "msg", nenhum),
"Adicional_detail": extra.Get ("Adicional_detail"),

Retornar JSON.despejos (json_record)
def JsonConfig (nome do arquivo = nenhum):
Se o nome do arquivo:
manipulador = log.FileHandler (nome do arquivo)
outro:
manipulador = log.FrextHandler (sys.stdout)
manipulador.setFormatter (JSONFORMATTER ())
exploração madeireira.getLogger ().addhandler (manipulador)
jsonConfig ()
exploração madeireira.getLogger ().Setlevel (log.DEPURAR)
exploração madeireira.Debug ("Exemplo de Python")
exploração madeireira.AVISO ("JSON LOGGING", Extra = "ATTION_DETAIL": 999)

O script de log do Python JSON gera a saída dos seguintes dicionários JSON:

Conclusão

A melhor maneira de organizar os logs e centralizar sua visualização é com o Python JSON Logging e um programa de gerenciamento de logs. Para formatar e obter os detalhes mais relevantes, também devemos examinar os procedimentos de registro do Python. É importante ser informado de nossas restrições de log do Python JSON, porque eles podem impedir que nos faça uma contribuição significativa. O evento de registro na forma de objetos JSON é muito melhor do que o texto simples. Usando uma linguagem de consulta baseada em JSON, é simples adicionar os registros aos bancos de dados usando o formato JSON.