Az Oxford Dictionary szó szerinti jelentése szerint a “log” szó úgy definiálható, mint “egy bizonyos időszak alatt történt események hivatalos feljegyzése, különösen egy hajó- vagy repülőút során”. A programozás területén a programozók is használják ezt a kifejezést, hogy nyilvántartást vezessenek a fontos eseményekről és tevékenységekről, amelyek fontosak a program megfelelő futásához. A tevékenységet vagy a napló létrehozását naplózásnak nevezik, az ilyen feladatot végző eszközöket pedig naplózónak.

A naplót egy naplófájlnak nevezett fájlban dokumentálják. A számítógépes programozói szakkifejezésben a naplófájl a következőképpen írható le:

olyan fájl, amely nyilvántartást vezet az eseményekről, folyamatokról, üzenetekről és a különböző kommunikáló szoftveralkalmazások és az operációs rendszer közötti kommunikációról. A naplófájlok a futtatható szoftverekben, operációs rendszerekben és programokban vannak jelen, amelyekben az összes üzenetet és a folyamat részleteit rögzítik. Minden futtatható fájl létrehoz egy naplófájlt, amelyben minden tevékenységet feljegyeznek.

– Technopedia

A naplófájl fontos számunkra, programozók számára, hogy bizonyos esetekben, például hibakeresés, kiértékelés és felügyelet céljából nyomon követhessük a fontos eseményeket. Ebben a cikkben egy egyszerű logger csomag létrehozásának módját szeretném megosztani, amelyet a szerveroldalon a Golang segítségével valósíthatunk meg.

Logger csomag a Golangban

A kódunk egy “logger” nevű csomagzáradék deklarálásával és a szükséges csomagok importálásával kezdődik: “fmt”, “log”, “os” és “path/filepath”. Kétféle loggert fogunk használni: Hibanaplót és hibanaplót. Az elsőt a közös események naplózására használjuk, mint például a bejelentkezés, kijelentkezés, lehívott adatok, elküldött adatok stb. Másrészt az utóbbit kifejezetten a hibaesemények naplózására használjuk. A loggerünk alapvetően egy log objektumra épül. Ezért létrehozunk két változót “CommonLog” és “ErrorLog” (figyeljük meg, hogy az első betű nagybetűs, hogy jelezze, hogy a változó exportált) egy mutatóval a logger struktúrára.

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

A következőkben elindítjuk a loggerünket. Kezdjük a fájl elérési útvonalának deklarálásával. Ezt úgy tesszük, hogy a naplófájlunk helyét az Abs paranccsal mutatjuk meg a fájlútvonal csomagból (ebben az esetben a naplófájl abszolút helyét használjuk). Ezt követően a hivatkozást a filePath változóban tartjuk meg.

Az init függvényen belül azzal folytatjuk, hogy megadjuk azt a parancsot, amely akkor fog végrehajtódni, amikor a naplófájlt megnyitja a program (erre a beállításra az openLogfile változóban hivatkozunk). Ezt az “os” csomagból származó “OpenFile” paranccsal tesszük, megadva a fájl elérési útvonalát (a fájlnév mellett a “filePath” változót használva), a flageket és a fileMode-ot. Ebben a részben kell eldöntenünk a naplófájl nevét is; ebben a cikkben a naplófájlt log.log-nak nevezzük el (vegyük észre a log kiterjesztést). Különös figyelmet kell fordítani a függvényben használt flags és a fileMode tekintetében. Ebben az esetben A flag-ek olyan mutatóként írhatók le, amelyek megmondják a programnak, hogy mit csináljon a megnyitott fájlokkal. Erre a célra az “os” csomagból származó előre definiált konstansokat használjuk:

  • os.0_RDWR = a fájl megnyitása írás-olvasással
  • os.0_CREATE = új fájl létrehozása, ha még nem létezik
  • os.0_APPEND = adatot csatol a fájlhoz íráskor

Mindeközben a fileMode “0666” az a kód, amellyel a Default file permission-t állítjuk be a fájl módosításához (a felhasználói engedélyekről bővebben itt olvashat).

Még a CommonLog és ErrorLog változóinkat írjuk át, hogy egy új naplót tartalmazzon. Ezt a “log” csomag “New” parancsával tesszük meg, megadva 1) a naplófájl csatornáját, 2) egy előtagot és a szükséges 3) zászlókat.

  1. A naplófájl csatornája: itt az openLogfile változót használjuk
  2. Prefix: Ez a naplónk azonosítója. Használhatunk egyéni string szót a lof típusának meghatározására (pl. “CommonLogger” vagy “ErrorLogger”)
  3. Flags: A flags ehhez a függvényhez jelöli azokat az információkat, amelyeket a naplónkban szeretnénk látni. Ehhez a Go-ban a log csomag beépített függvényét használjuk (részletesen itt látható).

Logger beillesztése a kódunkba

Végül beilleszthetjük a loggerünket, hogy naplózza a programunkban bekövetkező fontos eseményeket. Ezt a “Prinln” paranccsal tehetjük meg, mint amit az “fmt” csomaggal használtunk.

A naplófájlban a logger eredménye így fog kinézni:

Ez kész!

So, ennyi srácok! létrehoztunk egy logger csomagot, amit könnyen be tudunk injektálni függőségként a Go programunkba. Remélhetőleg hasznos lehet a programozótársak számára.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.