logo

Inici de sessió en Python

El registre és un mitjà per fer un seguiment dels esdeveniments que succeeixen quan s'executa algun programari. El registre és important per al desenvolupament, depuració i execució de programari. Si no teniu cap registre de registre i el vostre programa falla, hi ha molt poques possibilitats que detecteu la causa del problema. I si detecteu la causa, consumirà molt de temps. Amb el registre, podeu deixar un rastre de pa ratllat perquè si alguna cosa va malament, podem determinar la causa del problema.

Hi ha una sèrie de situacions com si estàs esperant un nombre enter, t'han donat un flotador i pots un núvol API , el servei està caigut per manteniment i molt més. Aquests problemes estan fora de control i són difícils de determinar.

Per què la declaració d'impressió no és Pythonic

Alguns desenvolupadors utilitzen el concepte d'imprimir les declaracions per validar si les sentències s'executen correctament o si s'ha produït algun error. Però la impressió no és una bona idea. Pot resoldre els vostres problemes per a scripts senzills, però per a scripts complexos, l'enfocament d'impressió fallarà.
Python té un mòdul integrat registre que permet escriure missatges d'estat en un fitxer o qualsevol altre flux de sortida. El fitxer pot contenir informació sobre quina part del codi s'executa i quins problemes han sorgit.



Nivells de registre de Python

Hi ha cinc nivells integrats del missatge de registre.

  • Depuració: S'utilitzen per donar informació detallada, normalment d'interès només quan es diagnostica problemes.
  • Informació: S'utilitzen per confirmar que les coses funcionen com s'esperava
  • Avís: S'utilitzen com a indicació que ha passat alguna cosa inesperada o és indicatiu d'algun problema en un futur proper
  • Error: Això indica que a causa d'un problema més greu, el programari no ha pogut realitzar alguna funció
  • Crític: Això indica un error greu, que indica que és possible que el programa en si mateix no pugui continuar executant-se

Si cal, els desenvolupadors tenen l'opció de crear més nivells, però aquests són suficients per gestionar totes les situacions possibles. A cada nivell integrat se li ha assignat el seu valor numèric.

El mòdul de registre inclou diverses funcions. Té diverses constants, classes i mètodes. Els elements amb majúscules són constants, els elements en majúscula són classes i els elements que comencen amb lletres minúscules són mètodes.

Hi ha diversos objectes de registre que ofereix el mateix gestor de base.

  • Logger.info(msg): Això registrarà un missatge amb el nivell INFO en aquest registrador.
  • Logger.warning (msg): Això registrarà un missatge amb un nivell ADVERTIMENT en aquest registre.
  • Logger.error(msg): Això registrarà un missatge amb el nivell ERROR en aquest registrador.
  • Logger.critical(msg): Això registrarà un missatge amb el nivell CRÍTIC en aquest registre.
  • Logger.log(lvl,msg): Això registrarà un missatge amb el nivell d'enter lvl en aquest registrador.
  • Logger.exception(msg): Això registrarà un missatge amb el nivell ERROR en aquest registrador.
  • Logger.setLevel(lvl): Aquesta funció estableix el llindar d'aquest registrador a lvl. Això vol dir que s'ignoraran tots els missatges per sota d'aquest nivell.
  • Logger.addFilter(filt): Això afegeix un filtre específic en aquest registre.
  • Logger.removeFilter(filt): Això elimina un filtre específic en aquest registre.
  • Logger.filter(registre): Aquest mètode aplica el filtre del registrador al registre proporcionat i retorna True si el registre s'ha de processar. En cas contrari, tornarà False.
  • Logger.addHandler(hdlr): Això afegeix un controlador hdlr específic a aquest registrador.
  • Logger.removeHandler(hdlr): Això elimina un controlador hdlr específic d'aquest registrador.
  • Logger.hasHandlers(): Això comprova si el registrador té algun controlador configurat o no.

Manipuladors útils

A més de la classe de controlador base, es proporcionen moltes subclasses útils.

Manipulador

Descripció

StreamHandler Envia missatges a fluxos (objectes semblants a fitxers).
Gestor de fitxers Envia missatges a fitxers de disc.
BaseRotatingHandler Classe base per als controladors que giren els fitxers de registre en un punt determinat. Ús RotatingFileHandler o TimedRotatingFileHandler en canvi.
RotatingFileHandler Envia missatges als fitxers de disc, amb suport per a mides màximes de fitxers de registre i rotació de fitxers de registre.
TimedRotatingFileHandler Envia missatges als fitxers de disc, girant el fitxer de registre a determinats intervals de temps.
SocketHandler Envia missatges a sockets TCP/IP. També admet sockets de domini Unix des de Python 3.4.
Datagram Handler Envia missatges a sockets UDP. També admet sockets de domini Unix des de Python 3.4.
SMTPHandler Envia missatges a una adreça de correu electrònic designada.
SysLogHandler Envia missatges a un dimoni Syslog Unix, possiblement en una màquina remota.
NTEventLogHandler Envia missatges a un registre d'esdeveniments de Windows NT/2000/XP.
MemoryHandler Envia missatges a un buffer a la memòria, que s'esborra sempre que es compleixen uns criteris específics.
HTTPHandler Envia missatges a un servidor HTTP mitjançant la semàntica GET o POST.
WatchedFileHandler Observa el fitxer al qual està iniciant sessió. Si el fitxer canvia, es tanca i es torna a obrir amb el nom del fitxer.
QueueHandler Envia missatges a una cua, com els implementats a la cua o als mòduls de multiprocessament.
NullHandler No fa res amb els missatges d'error. Utilitzat pels desenvolupadors de biblioteques per evitar el missatge 'No s'han trobat controladors per al registrador'.

Conceptes bàsics de registre de Python

Els fonaments bàsics d'utilitzar el mòdul de registre per gravar els esdeveniments en un fitxer són molt senzills. Per això, només cal importar el mòdul de la biblioteca.

  1. Creeu i configureu el registrador. Pot tenir diversos paràmetres. Però el més important, passa el nom del fitxer en què vols gravar els esdeveniments.
  2. Aquí també es pot configurar el format del registre. Per defecte, el fitxer funciona en adjuntar mode, però podem canviar-ho al mode d'escriptura si cal.
  3. A més, es pot configurar el nivell del registrador que actua com a llindar per al seguiment en funció dels valors numèrics assignats a cada nivell.
    Hi ha diversos atributs que es poden passar com a paràmetres.
  4. La llista de tots aquests paràmetres es mostra a Biblioteca Python . L'usuari pot triar l'atribut requerit segons el requisit.
    Després d'això, creeu un objecte i utilitzeu els diferents mètodes tal com es mostra a l'exemple.

Registrar una variable

Aquest codi mostra com registrar un missatge d'error. La funció logging.error() s'utilitza per registrar un missatge d'error amb un marcador de posició %s per al nom de la variable.

Python 3




import> logging> name>=> 'GFG'> logging.error(>'%s raised an error'>, name)>

>

funció anònima java

>

Sortida:

ERROR:root:GFG raised an error>

Registració de tots els nivells

Aquest codi mostra tots els nivells de registre.

Python




# importing module> import> logging> # Create and configure logger> logging.basicConfig(filename>=>'newfile.log'>,> >format>=>'%(asctime)s %(message)s'>,> >filemode>=>'w'>)> # Creating an object> logger>=> logging.getLogger()> # Setting the threshold of logger to DEBUG> logger.setLevel(logging.DEBUG)> # Test messages> logger.debug(>'Harmless debug Message'>)> logger.info(>'Just an information'>)> logger.warning(>'Its a Warning'>)> logger.error(>'Did you try to divide by zero'>)> logger.critical(>'Internet is down'>)>

>

>

El codi anterior generarà un fitxer amb el nom proporcionat i si obrim el fitxer, el fitxer conté les dades següents.

Conceptes bàsics de registre de Python

Configuració del registre

Inici de sessió a un fitxer: temp.conf

[loggers] keys=root,simpleExample [handlers] keys=consoleHandler [formatters] keys=simpleFormatter [logger_root] level=DEBUG handlers=consoleHandler [logger_simpleExample] level=DEBUG handlers=consoleHandler qualname=simpleExample propagate=0 [handler_consoleHandler]>

Exemple:

El codi configura un sistema de registre mitjançant la configuració de temp.conf dossier. Obté un enregistrador anomenat exemple senzill i registra missatges amb diversos nivells de registre.

Python 3

quantes ciutats hi ha als Estats Units


taules de làtex



import> logging> import> logging.config> logging.config.fileConfig(>'temp.conf'>)> # create logger> logger>=> logging.getLogger(>'simpleExample'>)> # 'application' code> logger.debug(>'debug message'>)> logger.info(>'info message'>)> logger.warning(>'warn message'>)> logger.error(>'error message'>)> logger.critical(>'critical message'>)>

>

>

Sortida:

2023-06-15 18:16:21 - simpleExample - DEBUG - debug message 2023-06-15 18:16:21 - simpleExample - INFO - info message 2023-06-15 18:16:21 - simpleExample - WARNING - warn message 2023-06-15 18:16:21 - simpleExample - ERROR - error message 2023-06-15 18:16:21 - simpleExample - CRITICAL - critical message>

Excepció de registre de Python

Generar excepcions durant el registre pot ser útil en determinats escenaris per indicar condicions excepcionals o errors a la vostra aplicació. En plantejar una excepció, podeu aturar el flux normal d'execució i notificar a la persona que truca o al sistema de registre sobre el problema trobat.

En aquest codi, estem generant una excepció que està sent capturada pel registre. excepció.

Python 3




import> logging> logging.basicConfig(level>=>logging.DEBUG,> >format>=>'%(asctime)s - %(levelname)s - %(message)s'>)> def> perform_operation(value):> >if> value <>0>:> >raise> ValueError(>'Invalid value: Value cannot be negative.'>)> >else>:> ># Continue with normal execution> >logging.info(>'Operation performed successfully.'>)> try>:> >input_value>=> int>(>input>(>'Enter a value: '>))> >perform_operation(input_value)> except> ValueError as ve:> >logging.exception(>'Exception occurred: %s'>,>str>(ve))>

>

>

Sortida:

Enter a value: -1 2023-06-15 18:25:18,064 - ERROR - Exception occurred: Invalid value: Value cannot be negative. ValueError: Invalid value: Value cannot be negative.>