Python JSON Registro

Python JSON Registro
El registro nos permite realizar un seguimiento de los eventos que ocurren mientras se produce cierto software. Cuando el software falla y no tenemos registros de registro, entonces hay muy pocas posibilidades de que descubramos la raíz del problema. Pero con los registros de registro, podemos mantener todas las fallas. Aunque, cuando un sistema tiene que analizar los registros que no siguen un patrón o módulo predefinidos, las cosas se vuelven complicadas. Python, por lo tanto, contiene JSON que organiza los datos de manera formateada utilizando objetos que se adhieren a un patrón especificado. El Python-Json-Logger es el módulo de registro de Python estándar que muestra los eventos de registro como un objeto JSON. El módulo JSON Logger mejora la legibilidad de la máquina de nuestros registros y evita la creación de los analizadores únicos para las entradas del tipo syslog.

Cómo usar el registro de Python JSON?

La biblioteca "python_json_logger" es necesaria para los registros en el formato JSON. Podemos instalar esta biblioteca de Python con el comando pip. El siguiente es el comando para instalarlo. Cuando se instala, el mensaje también muestra el mensaje de confirmación con la versión reciente de la biblioteca.

PIP Instale Python-Json-Logger

Ejemplo 1:

El uso básico del módulo de registro es relativamente sencillo y se puede usar para registrar los eventos en archivos. Aquí, primero proporcionamos la simple implementación de Python Logging. Creamos el registro y lo configuramos usando el método BasicConfig (). Este método toma el nombre del archivo donde se crean los registros porque el archivo dado está abierto en el modo Write "W". El formato también está configurado para los registros. Luego, declaramos el objeto "Logger" donde con el método getLogger (). Devuelve el registrador con el nombre asignado.

A continuación, el nivel del registrador se ajusta a través del método setLevel () para servir como el umbral de seguimiento para la depuración que se basa en los valores numéricos que se asignan a cada nivel. Después de eso, implementamos algunos métodos de clase de registrador, incluido el mensaje particular como parámetro. El método debug () imprime el mensaje de depuración. El método Info () genera un mensaje que se inicia sesión en este registrador con el nivel de información. Luego, el método crítico () muestra el nivel crítico del registrador dado. Los métodos de advertencia () y Error () muestran la advertencia para el registrador y cualquier excepción planteada por el registrador.

Registro de importación
Inicio sesión.BasicConfig (FileName = "Newfile.registro",
format = ' %(ascTime) s %(mensaje) s', fileMode = 'w')
Logger = registro.getLogger ()
maderero.setLevel (registro.DEPURAR)
maderero.Debug ("Declaración de depuración segura")
maderero.info ("es una información")
maderero.Advertencia ("Genera advertencia")
maderero.Error ("Se produce un error I.e cuando divide por cero ")
maderero.crítico ("La conexión a Internet es lenta")

El programa crea un archivo con el nombre de pila. Cuando abrimos el archivo, contiene la información en cada método de registrador especificado que se enumera en lo siguiente:

Ejemplo 2:

En el programa mencionado anteriormente, tenemos la funcionalidad de registro de Python. Ahora, tenemos un programa en el que se utiliza la Biblioteca Python JSON Logger para almacenar los registros en el formato JSON utilizando los métodos de registro incorporados. Aquí, comenzamos el código de registro de Python JSON insertando el módulo de registro y el módulo jsonlogger para la clase Pythonjsonlogger. Después de esto, declaramos el objeto "Formatero" que se establece con el método jsonFormatter () para obtener los resultados en formato JSON. Luego, definimos el objeto "json_handler" para invocar el método fileHandler () que proporciona el archivo JSON proporcionado.

A continuación, establecemos el formato para el archivo JSON utilizando el método setformatter () donde el objeto de formateador se pasa como entrada. Luego, obtenemos el objeto del Logger del método getLogger (). El "json_handler" se agrega a través del método addHandler (). Al final, el maderero.Error () El método que encuentra cualquier error del registro en formato JSON se plantea aquí.

Registro de importación
de pythonjsonlogger import jsonlogger
formatter = jsonlogger.JsonFormatter ()
json_handler = registro.FileHandler (filename = 'newLog.json ')
json_handler.setformatter (formatter)
Logger = registro.getLogger ('my_json')
maderero.AddHandler (JSON_HANDLER)
maderero.Error ('un error encontrado', extra = 'type': 'fatal')

El siguiente registro JSON se crea en el "NewLog.archivo json "cuando lo abrimos desde el módulo jsonlogger de Python:

Ejemplo 3:

El formato de registro JSON básico se da en el ejemplo anterior. Ahora, demostramos la excepción y el rastreo del formato del registro en JSON usando el módulo JSONLOGGER. Los trazas dan información específica sobre la falla del programa, por lo tanto, registrarlos con frecuencia es valioso. Podemos usar el registro.Método de excepción que es un módulo de registro de Python incorporado para registrar los errores y agregar nuestros mensajes de error personalizados.

Además, registro.El método de excepción () tiene una gravedad predeterminada de error. Primero, utilizamos la declaración de importación de cargar el módulo de registro y el módulo JSONLogger para registros JSON. Después de esto, creamos la instancia del registro usando el método getLogger () para acceder al registrador. La excepción del registro y el trazas se manejan y se generan en el "BadcalculationDemo.archivo json ".

A continuación, proporcionamos el método jsonformatter () en el objeto "Formatero" para formatear los registros en la estructura JSON y establecer el formateador proporcionado con SetFormatter. Luego, agregamos el controlador creado "LogHandlerJson" al método addHandler (). Se emplea el bloque Try-Except para atrapar los registros del siguiente rastreo. Aquí, tenemos una declaración de prueba donde el entero se divide por el valor de la cadena, que es una mala práctica de cálculo. La declaración excepto atrapa esta excepción de registro en el registro.Exception () que imprime el mensaje proporcionado junto con un informe de rastreo en el formato JSON al BadCalcationDemo.archivo json.

Registro de importación
de pythonjsonlogger import jsonlogger
Mylogger = registro.getLogger ()
LogHandlerjson = registro.FileHandler ("BadCalculationDemo.json ")
formatter = jsonlogger.JsonFormatter ()
Loghandlerjson.setformatter (formatter)
Mylogger.AddHandler (LogHandlerjson)
intentar:
1 / "leche"
excepto:
Inicio sesión.Excepción ('Tu cálculo fue malo')

Cuando se ejecuta el script, aparece un objeto JSON Stringified en BadCalculationDemo.contenido del archivo json. La siguiente es la imagen del badmathdemo.Archivo JSON que muestra el mensaje de error con la información de traza:

Ejemplo 4:

Los atributos con los caracteres específicos de JSON podrían hacer que el objeto JSON se corrompa. Podemos personalizar el sistema de registro único utilizando la clase Formatter y permitir que el módulo JSON escape adecuadamente de todos los atributos. Aquí, proporcionamos el registro JSON personalizado que proporciona los atributos adicionales para los eventos de los registros. Insertamos los módulos JSON, registro y SYS para crear los eventos de registro de nuestro sistema. Luego, establecemos la clase "JSONFORMATER" que toma el registro de entrada y el formateador como parámetros. Después de esto, creamos los atributos de "self" y "registros" para esta clase.

Luego, generamos el objeto "extra" donde se llama al método getattr () para acceder al registro.Atributos de Logrecord en el formato JSON. El registro JSON se usa para obtener el tiempo, el nombre de nivel, el nombre del archivo, el número de línea y el mensaje proporcionado para el registro del sistema.

Además, también extraemos detalles adicionales sobre los registros del sistema. Entonces, usamos el JSON.Método Dump () donde el objeto Python "JSON_RECORD" se pasa para la conversión en el objeto JSON. Los atributos JSON de Python se configuran desde la definición del método JSONConfig (). La técnica if-else se utiliza para crear el controlador personalizado que proporciona los registros en el archivo especificado o el formulario de la secuencia de salida a la consola. El registrador raíz está configurado con el controlador personalizado. Luego, invocamos el método jsonconfig () y el método de registro que proporciona el nivel de los mensajes de registro en forma de JSON.

import json, registro, sys
Clase JSONFORMATTER (registro.Formatero):
Formato DEF (self, registro):
extra = getattr (registro, "__dict__", )
json_record =
"Tiempo": extra.Obtener ("definido"),
"Nivel": GetAttr (registro, "LevelName", Ninguno),
"Archivo": getAttr (registro, "nombre de archivo", ninguno),
"Línea": GetAttr (registro, "Lineno", Ninguno),
"MSG": GetATTR (registro, "Msg", Ninguno),
"adicional_detail": extra.Get ("adicional_detail"),

RETURN JSON.Dumps (json_record)
Def JSONConfig (FileName = None):
Si el nombre de archivo:
controlador = registro.FileHandler (nombre de archivo)
demás:
controlador = registro.StreamHandler (SYS.stdout)
manipulador.setFormatter (jsonFormatter ())
Inicio sesión.getLogger ().AddHandler (Handler)
JSONCONFIG ()
Inicio sesión.getLogger ().setLevel (registro.DEPURAR)
Inicio sesión.Debug ("Ejemplo de Python")
Inicio sesión.ADVERTENCIA ("JSON Logging", Extra = "Addem_Detail": 999)

El script de registro de Python JSON genera la salida de los siguientes diccionarios JSON:

Conclusión

La mejor manera de organizar los registros y centralizar su visualización es con Python JSON Logging y un programa de gestión de registros. Para formatear y obtener los detalles más relevantes, también debemos mirar los procedimientos de registro de Python. Es importante informar sobre nuestras restricciones de registro de Python JSON porque podrían evitar que hagamos una contribución significativa. El evento de registro en forma de objetos JSON es mucho mejor que el texto simple. Usando un lenguaje de consulta basado en JSON, es simple agregar los registros a las bases de datos utilizando el formato JSON.