Sanan ”log” kirjaimellinen merkitys Oxfordin sanakirjasta voidaan määritellä seuraavasti: ”virallinen kirjaus tapahtumista tietyn ajanjakson aikana, erityisesti laivalla tai lentokoneella tehdystä matkasta”. Ohjelmointialalla ohjelmoijat käyttävät tätä termiä myös pitääkseen kirjaa tärkeistä tapahtumista ja toiminnoista, joilla on merkitystä ohjelman moitteettoman toiminnan kannalta. Toimintaa tai lokin luomista kutsutaan kirjaamiseksi ja työkaluja tällaisen tehtävän suorittamiseen kutsutaan kirjaajaksi.

Loki dokumentoidaan tiedostoon nimeltä Lokitiedosto. Tietokoneohjelmoijan terminä lokitiedostoa voitaisiin kuvata

tiedostona, joka pitää rekisteriä tapahtumista, prosesseista, viesteistä ja viestinnästä eri kommunikoivien ohjelmistosovellusten ja käyttöjärjestelmän välillä. Lokitiedostoja on suoritettavissa ohjelmistoissa, käyttöjärjestelmissä ja ohjelmissa, joihin kirjataan kaikki viestit ja prosessien yksityiskohdat. Jokainen suoritettava tiedosto tuottaa lokitiedoston, johon kaikki toiminnot merkitään.

– Technopedia

Lokitiedosto on tärkeä meille ohjelmoijille, jotta voimme pitää kirjaa tärkeistä tapahtumista tiettyjä tapauksia, kuten virheenkorjausta, arviointia ja seurantaa varten. Tässä artikkelissa haluan jakaa tavan luoda yksinkertainen lokipaketti, joka toteutetaan palvelinpuolella Golangilla.

Logipaketti Golangissa

Koodimme alkaa julistamalla pakettilauseke nimeltä ”logger” ja tuomalla tarvittavat paketit: ”fmt”, ”log”, ”os” ja ”path/filepath”. Käytämme kahdenlaisia loggereita: Yleinen loki ja Virheloki. Ensimmäistä käytetään yleisten tapahtumien, kuten kirjautumisen, uloskirjautumisen, haettujen tietojen, lähetettyjen tietojen jne. kirjaamiseen. Toisaalta jälkimmäistä käytetään erityisesti virhetapahtumien kirjaamiseen. Ytimeltään loggaajamme perustuu log-objektiin. Näin ollen luomme kaksi muuttujaa ”CommonLog” ja ”ErrorLog” (huomaa, että ensimmäinen kirjain on isolla alkukirjaimella osoittaaksemme, että muuttuja on viety), joissa on osoitin logger-rakenteeseen.

package loggerimport (
"fmt"
"log"
"os"
"path/filepath"
)var CommonLog *log.Loggervar ErrorLog *log.Logger

Seuraavaksi käynnistämme loggerimme. Aloitetaan ilmoittamalla tiedostopolku. Teemme sen osoittamalla lokitiedostomme sijainnin käyttämällä Abs-komentoa tiedostopolku-paketista (tässä tapauksessa käytämme lokitiedoston absoluuttista sijaintia). Tämän jälkeen säilytämme viittauksen filePath-muuttujassa.

Init-funktion sisällä jatkamme asettamalla komennon, joka suoritetaan, kun ohjelma avaa lokitiedoston (tähän asetukseen viitataan openLogfile-muuttujassa). Teemme tämän ”os”-paketin ”openFile”-komennolla määrittelemällä tiedoston polun (käyttämällä ”filePath”-muuttujaa tiedoston nimen lisäksi), flagit ja fileMode. Tässä osassa meidän on myös päätettävä lokitiedoston nimi; tässä artikkelissa nimeämme lokitiedoston nimellä log.log (huomaa log-pääte). Kiinnitä erityistä huomiota funktiossa käytettäviin flagseihin ja fileModeen. Tässä tapauksessa Flagit voidaan kuvata indikaattoreiksi, jotka kertovat ohjelmalle, mitä tehdä avatulle tiedostolle. Tätä tarkoitusta varten käytämme ”os”-paketin valmiita vakioita:

  • os.0_RDWR = avaa tiedosto read-write
  • os.0_CREATE = luo uusi tiedosto, jos sellaista ei ole
  • os.0_APPEND = liittää dataa tiedostoon kirjoitettaessa

Mikäli fileMode ”0666” on koodi, jolla asetetaan oletustiedoston oikeudet tiedoston muokkaamiseen (lisätietoa käyttäjän oikeuksista voi lukea täältä).

Lisäksi kirjoitamme CommonLog- ja ErrorLog-muuttujamme uudelleen niin, että ne sisältävät uuden lokin. Teemme tämän ”log”-paketin ”New”-komennolla määrittämällä 1) lokitiedoston kanavan, 2) etuliitteen ja tarvittavat 3) liput.

  1. Kanava lokitiedostolle: käytämme tässä muuttujamme openLogfile
  2. Prefix: Tämä on lokimme tunniste. Voimme käyttää mukautettua merkkijonosanaa määrittelemään lokin tyypin (esim. ”CommonLogger” tai ”ErrorLogger”)
  3. Flags: Tämän toiminnon liput ilmaisevat tiedot, jotka haluamme lokiimme. Tähän tarkoitukseen käytämme Go:n log-paketin sisäänrakennettua funktiota (yksityiskohdat löytyvät täältä).

Loggerin injektointi koodiimme

Viimeiseksi voisimme injektoida loggerimme kirjaamaan tärkeät tapahtumat, joita ohjelmassamme tapahtuu. Tämä voidaan tehdä käyttämällä ”Prinln”-komentoa, kuten käytimme ”fmt”-paketin kanssa.

Tässä lokitiedostossa loggerin tulos on seuraavanlainen:

Se on valmis!

Se oli siinä kaverit! olemme luoneet loggeri-paketin, joka voidaan helposti injektoida riippuvuussuhteena Go -ohjelmaamme. Toivottavasti siitä voi olla hyötyä teille ohjelmointitovereille.

Vastaa

Sähköpostiosoitettasi ei julkaista.