Djangon lokitus – Helpoin tapa suorittaa se!

Djangon lokitus

Kaikki kehittäjät debuggaavat virheitä. Näiden virheiden ratkaiseminen vie aikaa. Useimmissa tapauksissa auttaa tietää, milloin ja missä virhe tapahtui. Sanoisin, että Pythonin virheilmoitukset ovat varsin hyödyllisiä. Mutta nämäkin viestit muuttuvat hyödyttömiksi, kun puhutaan projekteista, joissa on useita tiedostoja. Tämä ongelma ja monet muut hyödyt tulevat lokituksesta.

Djangon kehittäjinä on tärkeää, että hallitsemme myös lokituksen. Backend-tekniikoilla on erilaisia loistavia työkaluja lokituksen toteuttamiseen. Myös Django tarjoaa tukea erilaisille lokituskehyksille ja -moduuleille. Toteutamme sen käyttäen perustason ja yhtä suosituimmista, loggausmoduulia.

Tässä opetusohjelmassa opimme loggauksesta. Sisältö tulee olemaan:

  • Mitä on lokitus?
  • Pythonin lokimoduuli
  • Loggaus Djangossa

Valmiina oppimaan. Aloitetaan.

Pysy ajan tasalla uusimmista teknologiatrendeistä
Join DataFlair on Telegram!!!

Mitä on lokitus?

Loggaus on tekniikka tai väline, jonka avulla voimme seurata joitain tapahtumia, kun ohjelmisto suoritetaan. Se on tärkeä tekniikka kehittäjille. Se auttaa heitä seuraamaan tapahtumia. Kirjaaminen on heille kuin ylimääräiset silmät. Kehittäjät eivät ole vastuussa vain ohjelmistojen tekemisestä vaan myös niiden ylläpidosta. Lokien kirjaaminen auttaa huollon tässä osassa suunnattomasti.

Se seuraa jokaista tapahtumaa, joka tapahtuu koko ajan. Se tarkoittaa, että pitkien jäljitysten sijaan saat paljon enemmän. Tällä kertaa virheen sattuessa näet, missä vaiheessa järjestelmä oli. Tämä menetelmä auttaa sinua ratkaisemaan virheet nopeasti. Koska voit kertoa, missä virhe tapahtui.

Miten se toimii? Mikä on sen idea?

Lokitusta hoitaa erillinen ohjelma. Tuo lokitusohjelma on yksinkertaisesti tiedoston kirjoittaja. Lokiohjelman sanotaan tallentavan tietyt tapahtumat tekstimuodossa. Tallennetut tiedot tallennetaan sitten tiedostoihin. Tätä varten tehtyjä tiedostoja kutsutaan lokitiedostoiksi. Lokit ovat yksinkertaisia tiedostoja, jotka tallennetaan log-päätteellä. Ne sisältävät lokitiedot tapahtuneista tapahtumista.

No, tämä on vain yksi käytetyimmistä toteutuksista, kuten näet. Koska me vain tallennamme tietoja, voit keksiä muitakin tapoja käsitellä niitä.

Okei, meille on selvää, että lokien kirjaaminen on tärkeää. Onko se vaikeaa? Ei missään nimessä kaveri. Kirjaaminen ei ole ollenkaan vaikeaa. Kuka tahansa, joka tietää hieman asetuksista, voi käyttää tätä.

Kun olet Python-ohjelmoija, saat tässä myös lisäominaisuuksia. Meillä on kokonainen moduuli, jonka avulla voimme toteuttaa juuri tämän. Mitä tulee muihin kieliin, moduuleja on monia, Javalla on Log4j ja JavaScriptillä on oma loglevel. Kaikki nämäkin ovat hämmästyttäviä työkaluja. Okei, käsittelemme tässä siis Pythonia (suosikkikieleni).

Loggausmoduuli Pythonissa

Loggausmoduuli on sisäänrakennettu Python-moduuli. Se tulee esiasennettuna Python 3:n mukana. Lokimoduulia käytetään ohjelman suorituksen aikana tapahtuvien tapahtumien seuraamiseen. Se voidaan laajentaa mihin tahansa ohjelmaan, ja näin ollen ohjelmistoille se on helppo asentaa ja käyttää.

Miksi käyttää lokimoduulia?

Kehittäjänä voimme kysyä, miksi käyttää lokimoduulia. Kaikki mitä lokitus tekee, on tiedostoon kirjoittaminen tai tulostaminen konsoliin. Kaikki tämä voidaan saavuttaa käyttämällä print-lausekkeita. Mihin lokimoduulia sitten tarvitaan?. Se on aiheellinen kysymys. Vastaus siihen on, että loggaus on moduuli, joka antaa sen, mitä print ei voi.

Käytämme print-funktiota tulostaaksemme jotain konsoliin. Kun funktio suoritetaan, saamme siis tulostuslausekkeen, että funktio suoritettiin. Vaikka tämä lähestymistapa toimii pienemmissä sovelluksissa, se on tehoton.

Tulosta-funktiosta tulee osa ohjelmaa, ja jos ohjelma lakkaa toimimasta, et saa tulosta. Lisäksi, jos jotain tapahtuu ja järjestelmä käynnistyy uudelleen, myös konsoli on tyhjä. Joten, mitä teet sitten? Vastaus siihen on lokimoduuli.

Lokimoduuli pystyy:

  • Multithreading-toteutukseen
  • Viestien kategorisointiin eri lokitasojen kautta
  • Se on paljon joustavampi ja konfiguroitavampi
  • Antaa jäsennellymmän informaation

Lokimoduulissa on siis 4 pääosaa. Tarkastelemme niitä yksi kerrallaan.

1. Loggaajat

Loggaajat ovat objekteja, joita kehittäjät käsittelevät. Ne voidaan ymmärtää funktioksi, jota kutsutaan, kun niitä kutsutaan. Käytämme loggereita projektitiedostoissa. Näin kun funktiota kutsutaan, saamme yksityiskohtaisen raportin. Loggeri voi tuottaa monitasoisia vastauksia. Voimme mukauttaa sitä täysin.

2. Käsittelijät

Käsittelijät ovat objekteja, jotka lähettävät tietoa. Ajattele niitä sanomalehden käsittelijöinä. Niiden päätehtävä on välittää tietoa. Se voidaan toteuttaa kirjoittamalla tiedot lokitiedostoon (oletuskäyttäytyminen). Lokimoduulin tarjoamia käsittelijöitä on useita.

Voidaan helposti asettaa useita käsittelijöitä samalle lokimoduulille. On myös SMTP-käsittelijöitä, jotka postittavat lokitiedot sinulle. Käsittelijät sisältävät yleensä liiketoimintalogiikkaa lokitietoja varten.

3. Muotoilijat

Muotoilijat ovat niitä, jotka muotoilevat tiedot. Käsittelijät eivät näet voi lähettää tietoa, koska se on Python-tietotyyppi. Ennen kuin sitä voidaan lähettää kenellekään, se on muunnettava.

Lokit ovat oletusarvoisesti Log Records -muodossa. Se on lokikehyksen ennalta määrittelemä luokka. Se antaa kehittäjille erilaisia metodeja käytettäväksi. Tuota muotoa ei voi lähettää suoraan verkon kautta tai kirjoittaa tekstitiedostoon. Sen muuntamiseksi tai muotoilemiseksi tarvitaan muotoilijoita. Eri käsittelijöille on erilaisia formattereita.

Oletusarvoisesti formatterit muuttavat lokitietueen merkkijonoksi. Tätä käyttäytymistä voidaan helposti muuttaa ja voit muokata sitä haluamallasi tavalla. Tämä muotoilu voi perustua liiketoimintalogiikkaan, jonka kirjoitamme käsittelijöihin.

4. Suodattimet

Logimoduulin viimeinen osa on suodattimet. Suodattimet, kuten nimestä voi päätellä, suodattavat viestejä. Jokaista välittämäämme viestiä ei tarvitse tallentaa tai kuljettaa. Tai eri viesteille voi olla eri käsittelijöitä. Kaikki tämä on mahdollista toteuttaa suodattimien avulla.

Voidaan käyttää suodattimia sekä loggaajien että käsittelijöiden kanssa.

Okei, nyt olemme saaneet perusidean lokimoduulista. Se tarjoaa meille myös viestitasoja. Viestitasot on määritelty seuraavasti:

DEBUG: Se on sanallista järjestelmätietoa, kun kaikki toimii hyvin. Se kertoo tarkempia yksityiskohtia järjestelmän tilasta. Sen vakavuusaste on 10.

INFO: Info tuottaa vähemmän sanallista järjestelmätietoa, mutta on samanlainen kuin debug. Se kertoo yleensä yleiskatsauksen siitä, mitä järjestelmä suorittaa. Sen vakavuuspiste on 20.

VAROITUS: Tämä sisältää tietoa matalan tason ongelmista. Ongelmat voidaan jättää huomiotta, koska ne eivät aiheuta järjestelmän pysähtymistä. On kuitenkin suositeltavaa, että nämä ongelmat ratkaistaan.

Sen vakavuuspiste on 30.

ERROR: Tämä viesti on vakava. Virhe sisältää tietoja ilmenneestä suuresta ongelmasta. Ongelma on saattanut pysäyttää ohjelman toiminnan ja vaatii välitöntä huomiota.

Sen vakavuuspiste on 40.

CRITICAL: Kriittisin viesti. Tämä viesti lähetetään, kun ongelma on aiheuttanut järjestelmän pysähtymisen. Se tarkoittaa, että koko sovellus on pysähtynyt tämän ongelman vuoksi.

Sen vakavuuspiste on 50.

Seurauspiste määrittää, mikä prioriteetti annetaan. Oletetaan, että asetamme lokitasoksi 30. Silloin loki kirjaa tai tallentaa tiedot, kun taso on suurempi tai yhtä suuri kuin 30. Sinun on siis vain vahvistettava, minkä tason lokitusta haluat. Opimme niistä lisää myöhemmässä osiossa.

Loggauksen voimme toteuttaa helposti tuomalla moduulin. Koska se on sisäänrakennettu moduuli, meidän ei tarvitse asentaa sitä pipin kautta.

Kirjoita vain tämä Python-tiedostoosi ja voimme käyttää loggaajia.

Koodi:

import logginglogging.warning("DataFlair Logging Tutorials")

import loggauksen tuloste - Djangon loggaus

Koodin tuottama tuloste on aivan alla. Kuten näet, loki tulostuu konsoliin, siinä on log-level, logger-name ja message. root on oletusarvoisesti logger-name. Käytämme tämäntyyppisiä funktioita Djangon näkymissämme.

Tutustu täydelliseen opetusohjelmaan Pythonin lokimoduulista

Loggaaminen Djangossa

Django tarjoaa loggauksen Pythonin lokimoduulin avulla. Lokimoduuli on helposti konfiguroitavissa.

Kun haluamme käyttää lokitusta Djangossa, on noudatettava tiettyjä vaiheita. Menettelytapa on seuraava:

  1. Konfiguroimme settings.py:ssä erilaiset loggaajat, käsittelijät ja suodattimet.
  2. Sisällytämme loggaajien koodin tarvittaessa näkymiin tai johonkin muuhun Djangon moduuliin.

Okei, aloitetaan siis.

Luo uusi projekti

Luomme uuden projektin lokitusta varten. Sen jälkeen voit käyttää lokitusta olemassa olevissa projekteissa. Voit siis luoda uuden projektin suorittamalla komentorivillä tämän komennon:

$ django-admin startproject dataflairlogs

Tämä käynnistää uuden projektin. Nyt konfiguroidaan projektin settings.py-tiedosto.

Säätöjen konfigurointi

Sitä varten, että voimme sisällyttää lokituksen Djangoon, meidän on konfiguroitava sen asetukset. Sen tekeminen on melko helppoa. Kirjausasetusten konfiguroinnilla tarkoitamme:

  • Loggerit
  • Handlerit
  • Filterit
  • Formatterit

Koska Django toimii erilaisten moduulien kanssa, siksi käytämme dictConfig-metodia.

On olemassa muitakin raakamenetelmiä, mutta dictConfig on mitä Djangon oletuskäyttäytyminen.

Kopioi vain tämä koodi settings.py:si

Koodi:

# DataFlair #Logging InformationLOGGING = { 'version': 1, # Version of logging 'disable_existing_loggers': False, #disable logging # Handlers ############################################################# 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': 'dataflair-debug.log', },######################################################################## 'console': { 'class': 'logging.StreamHandler', }, }, # Loggers #################################################################### 'loggers': { 'django': { 'handlers': , 'level': 'DEBUG', 'propagate': True, 'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG') }, },}

settings.py - Djangon kirjaaminen

Koodin ymmärtäminen:

Tiedän, että koodi on hieman suuri, mutta se on hyvin helppo ymmärtää. Saamme Djangosta sisäänrakennetun muuttujan LOGGING. Loggauksen oletusarvot tulevat tästä sanakirjasta. Koska konfiguroimme asetuksia sanakirjan avulla, sitä kutsutaan dictConfig-metodiksi. LOGGING-sanakirjan sisällä on joitakin tärkeitä avaimia.

  1. version
  2. disable_existing_loggers
  3. handlers
  4. loggers

Keskustellaan niistä yksitellen. Versio-avain kertoo skeeman version. On tärkeää, että sillä on arvo. Se on oletuksena 1.

Seuraava avain on disable_existing_loggers. Tällä avaimella kerrotaan Djangolle, ettei se poista loggaajia käytöstä. Oletusarvoisesti Django käyttää joitakin omia loggaajiaan. Nämä loggaajat ovat yhteydessä Django ORM:ään ja muihin Djangon sisäisiin osiin. Tämä avain on oletusarvoisesti True. Se siis poistaa nämä loggaajat käytöstä.

Loggaajat kirjaavat erilaisia tietokantakyselyjä ja funktiokutsuja. Siksi on suositeltavaa, että et True tätä avainta.

Handlers on kolmas avain. Kuten keskustelimme, käsittelijät käsittelevät viestejä ja välittävät ne konsoliin, tiedostoon jne. Käsittelijät itsessään on sanakirja. Tuon sanakirja-avaimen nimet ovat käsittelijöiden nimiä. Lokimoduulin tarjoamia käsittelijöitä on useita. Käytämme tässä kahta käsittelijää.

1. FileHandler: logger-name – filehandler

FileHandler tallentaa lokit tiedostoon. Kuten näet, olemme antaneet tiedostonimeksi dataflair-debug.log.

Tasolla määritetään, mille tasolle asti loggeri sitouttaa lokit.

Huomautus:

Lokitiedostot tallennetaan yleensä .log-päätteellä. Tätä tiedostoa voi muokata vain käyttöoikeuksilla. Sitä voi vain lisätä.

2. StreamHandler: loggaajan nimi – console

The stream handler will stream the log on console. Tämä ei ole suositeltava menetelmä. On rajoitettu merkkien määrä, kunnes komentorivillä näkyy lokit. Koska lokit ovat liian suuria käsiteltäväksi komentorivillä siksi tarvitsemme tiedostokäsittelijöitä.

On muitakin käsittelijöitä, kuten mailhandler, AdminEmailHandler jne.

AdminEmailHandler on loistava lisä opensource-moduuliin.

Loggerit ovat niitä, jotka kirjaavat palvelimen tai ohjelmiston tietoja. Loggerit ovat myös sanakirjatyyppiä. Sillä on samanlainen arkkitehtuuri kuin käsittelijöillä. Tosin siinä on erilaisia attribuutteja ja muita ominaisuuksia.

Django tarjoaa myös joukon loggaajia. On olemassa erilaisia loggaajia, kuten django, django.requests. ja muita.

Oletko tutustunut viimeisimpään Django request & response Tutorialiin

Nyt toteuttaaksesi loggauksen sinun tarvitsee vain seurata näitä vaiheita:

Käynnistä palvelimesi.

$ python manage.py runserver

Hetkellä kun painat enteriä tulee sarja lokitiedostoja ja paljonkin. Tämä tapahtui, koska asetimme oletustasoksi debug. Kaikki nämä lokit ovat itse asiassa oletusloggaajien viestejä.

Voit luoda omat loggaajasi peräkkäisiin tiedostoihin. Näin voit saada lokit tietyistä tiedostoista.

Tässä on tuloste tiedostosta, joka syntyy loggauksen jälkeen.

logs - Django Logging

Nämä ovat lokit. Lokeja on paljon, mutta vain varoitus tai sitä korkeammat tasot ilmoitetaan.

Yhteenveto

Loggaaminen on aika tärkeää. Jos se on toteutettu oikein, se voi säästää paljon aikaa. Yleensä lokitus tehdään projektin valmistumisen jälkeen.

Loggausmoduuli on lokituksen perusteet Djangolla tai muulla python-projektilla. On olemassa myös muita ratkaisuja kuten, celery, travis jne. Nämä lokinkäsittelijät helpottavat myös lokien käsittelyä. Ne voivat helpottaa etsintää, tapahtuiko tapahtumia vai ei ja mikä oli niiden syy.

Vastaa

Sähköpostiosoitettasi ei julkaista.