Pieteikšanās Python

Pieteikšanās Python

Reģistrēšana ir līdzeklis, lai izsekotu notikumus, kas notiek, palaižot kādu programmatūru. Reģistrēšana ir svarīga programmatūras izstrādei, atkļūdošanai un palaišanai. Ja jums nav reģistrēšanas ierakstu un programma avarē, ir ļoti maz iespēju, ka atklāsit problēmas cēloni. Un, ja jūs atklājat cēloni, tas patērēs daudz laika. Izmantojot mežizstrādi, varat atstāt rīvmaizes pēdas, lai, ja kaut kas noiet greizi, mēs varētu noteikt problēmas cēloni.

Pastāv vairākas situācijas, piemēram, ja jūs sagaidāt veselu skaitli, jums ir dots pludiņš un jūs varat izveidot mākoni API , pakalpojums nedarbojas apkopes dēļ un daudz ko citu. Šādas problēmas ir nekontrolējamas, un tās ir grūti noteikt.

Kāpēc drukas paziņojums nav Pythonic

Daži izstrādātāji izmanto paziņojumu drukāšanas koncepciju, lai pārbaudītu, vai paziņojumi ir izpildīti pareizi vai ir radusies kāda kļūda. Bet drukāšana nav laba ideja. Tas var atrisināt jūsu problēmas ar vienkāršiem skriptiem, bet sarežģītiem skriptiem drukāšanas pieeja neizdosies.
Python ir iebūvēts modulis mežizstrāde kas ļauj rakstīt statusa ziņojumus failā vai citās izvades plūsmās. Failā var būt informācija par to, kura koda daļa tiek izpildīta un kādas problēmas ir radušās.

Python reģistrēšanas līmeņi

Ir pieci iebūvēti žurnāla ziņojuma līmeņi.

  • Atkļūdošana: Tie tiek izmantoti, lai sniegtu detalizētu informāciju, kas parasti interesē tikai tad, kad tiek diagnosticētas problēmas.
  • Informācija: Tie tiek izmantoti, lai apstiprinātu, ka viss darbojas, kā paredzēts
  • Brīdinājums: Tie tiek izmantoti kā norāde, ka noticis kaut kas neparedzēts, vai liecina par kādu problēmu tuvākajā nākotnē
  • Kļūda: Tas norāda, ka nopietnākas problēmas dēļ programmatūra nav spējusi veikt kādu funkciju
  • Kritisks: Tas norāda uz nopietnu kļūdu, norādot, ka pati programma, iespējams, nevar turpināt darboties

Ja nepieciešams, izstrādātājiem ir iespēja izveidot vairāk līmeņu, taču ar tiem pietiek, lai risinātu visas iespējamās situācijas. Katram iebūvētajam līmenim ir piešķirta tā skaitliskā vērtība.

Mežizstrādes modulis ir aprīkots ar vairākām funkcijām. Tam ir vairākas konstantes, klases un metodes. Vienumi ar lielajiem burtiem ir nemainīgi, vienumi ar lielo burtu ir klases un vienumi, kas sākas ar mazajiem burtiem, ir metodes.

Ir vairāki mežizstrādes objekti, ko piedāvā pats bāzes hendleris.

  • Logger.info(ziņa): Šajā reģistrētājā tiks reģistrēts ziņojums ar līmeņa INFO.
  • Logger.warning(īsziņa): Šajā reģistrētajā tiks reģistrēts ziņojums ar līmeni BRĪDINĀJUMS.
  • Logger.error(īsziņa): Šajā reģistrētājā tiks reģistrēts ziņojums ar līmeni ERROR.
  • Logger.critical(ziņa): Šajā reģistrētājā tiks reģistrēts ziņojums ar līmeni KRITISKS.
  • Logger.log(lvl, msg): Šajā reģistrētājā tiks reģistrēts ziņojums ar veselu skaitļu līmeni lvl.
  • Logger.exception(msg): Šajā reģistrētājā tiks reģistrēts ziņojums ar līmeni ERROR.
  • Logger.setLevel(lvl): Šī funkcija iestata šī reģistrētāja slieksni uz lvl. Tas nozīmē, ka visi ziņojumi, kas ir zemāki par šo līmeni, tiks ignorēti.
  • Logger.addFilter(filtrs): Tādējādi šim reģistrētājam tiek pievienots īpašs filtrs.
  • Logger.removeFilter(filtrs): Tādējādi tiek noņemts īpašs filtrs, kas piemērots šim reģistrētājam.
  • Logger.filter(ieraksts): Šī metode nodrošinātajam ierakstam piemēro reģistrētāja filtru un atgriež vērtību True, ja ieraksts ir jāapstrādā. Citādi tas atgriezīsies False.
  • Logger.addHandler(hdlr): Tādējādi šim reģistrētājam tiek pievienots īpašs apdarinātājs hdlr.
  • Logger.removeHandler(hdlr): Tādējādi šajā reģistrētājā tiek noņemts īpašs apdarinātājs hdlr.
  • Logger.hasHandlers(): Tas pārbauda, ​​vai reģistrētājam ir konfigurēts kāds apstrādātājs.

Noderīgi apdarinātāji

Papildus pamata apdarinātāja klasei tiek nodrošinātas daudzas noderīgas apakšklases.

Apdarinātājs

Apraksts

StreamHandler Nosūta ziņojumus straumēm (failiem līdzīgiem objektiem).
Failu apstrādātājs Nosūta ziņojumus uz diska failiem.
BaseRotatingHandler Bāzes klase apstrādātājiem, kas rotē žurnālfailus noteiktā punktā. Izmantot RotatingFileHandler vai TimedRotatingFileHandler vietā.
RotatingFileHandler Sūta ziņojumus uz diska failiem, atbalsta maksimālo žurnālfailu izmēru un žurnālfaila rotāciju.
TimedRotatingFileHandler Nosūta ziņojumus uz diska failiem, pagriežot žurnāla failu noteiktos laika intervālos.
SocketHandler Sūta ziņojumus uz TCP/IP ligzdām. Atbalsta arī Unix domēna ligzdas kopš Python 3.4.
DatagramHandler Sūta ziņas uz UDP ligzdām. Atbalsta arī Unix domēna ligzdas kopš Python 3.4.
SMTPHandler Sūta ziņas uz norādīto e-pasta adresi.
SysLogHandler Nosūta ziņojumus uz Unix Syslogthe dēmonu, iespējams, uz attālo mašīnu.
NTEventLogHandler Nosūta ziņojumus uz Windows NT/2000/XP notikumu žurnālu.
Memory Handler Nosūta ziņojumus uz buferi atmiņā, kas tiek izskalota ikreiz, kad tiek izpildīti konkrēti kritēriji.
HTTPHandler Sūta ziņojumus uz HTTP serveri, izmantojot GET vai POST semantiku.
Noskatīts failu apstrādātājs Novēro failu, kurā tiek reģistrēts. Ja fails mainās, tas tiek aizvērts un atkārtoti atvērts, izmantojot faila nosaukumu.
QueueHandler Nosūta ziņojumus uz rindu, piemēram, tos, kas ir ieviesti rindā vai vairāku apstrādes moduļos.
NullHandler Neko nedara ar kļūdu ziņojumiem. Izmanto bibliotēku izstrādātāji, lai izvairītos no ziņojuma “Nevarēja atrast reģistratora apstrādātājus”.

Python reģistrēšanas pamati

Mežizstrādes moduļa izmantošanas pamati notikumu ierakstīšanai failā ir ļoti vienkārši. Lai to izdarītu, vienkārši importējiet moduli no bibliotēkas.

  1. Izveidojiet un konfigurējiet reģistrētāju. Tam var būt vairāki parametri. Bet, kas ir svarīgi, nododiet faila nosaukumu, kurā vēlaties ierakstīt notikumus.
  2. Šeit var iestatīt arī reģistrētāja formātu. Pēc noklusējuma fails darbojas pievienot režīmā, bet mēs varam to mainīt uz rakstīšanas režīmu, ja nepieciešams.
  3. Var iestatīt arī reģistrētāja līmeni, kas darbojas kā izsekošanas slieksnis, pamatojoties uz katram līmenim piešķirtajām skaitliskām vērtībām.
    Ir vairāki atribūti, kurus var nodot kā parametrus.
  4. Visu šo parametru saraksts ir norādīts Python bibliotēka . Lietotājs var izvēlēties nepieciešamo atribūtu atbilstoši prasībām.
    Pēc tam izveidojiet objektu un izmantojiet dažādas metodes, kā parādīts piemērā.

Mainīgā reģistrēšana

Šis kods parāda, kā reģistrēt kļūdas ziņojumu. Funkciju logging.error() izmanto, lai reģistrētu kļūdas ziņojumu ar vietturi %s mainīgā nosaukumam.

Python3




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

Izvade:

ERROR:root:GFG raised an error 

Visu līmeņu reģistrēšana

Šis kods parāda visus reģistrēšanas līmeņus.

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'> )>

Iepriekš minētais kods ģenerēs failu ar norādīto nosaukumu, un, ja mēs atveram failu, fails satur šādus datus.

Python reģistrēšanas pamati

Reģistrācijas konfigurēšana

Pieteikšanās failā: 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] 

Piemērs:

Kods iestata reģistrēšanas sistēmu, izmantojot konfigurāciju no temp.conf failu. Tas iegūst mežizstrādātāju ar nosaukumu vienkāršs piemērs un reģistrē ziņojumus ar dažādiem žurnāla līmeņiem.

Python3




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'> )>

Izvade:

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 

Python reģistrēšanas izņēmums

Izņēmumu palielināšana reģistrēšanas laikā var būt noderīga noteiktos scenārijos, lai norādītu uz ārkārtas apstākļiem vai kļūdām jūsu lietojumprogrammā. Izvirzot izņēmumu, varat apturēt parasto izpildes plūsmu un informēt zvanītāju vai reģistrēšanas sistēmu par radušos problēmu.

Šajā kodā mēs izvirzām izņēmumu, ko uztver mežizstrāde. izņēmums.

Python3




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))>

Izvade:

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.