Podle doslovného významu z Oxfordského slovníku lze slovo „log“ definovat jako „oficiální záznam událostí během určitého časového období, zejména cesty na lodi nebo v letadle“. V oblasti programování používají tento termín také programátoři, aby si vedli záznamy o důležitých událostech a činnostech, které jsou důležité pro správný běh programu. Činnost neboli vytváření záznamu se nazývá logování a nástroje k provádění takového úkolu se nazývají logger.

Záznam je dokumentován v souboru zvaném Log File. V terminologii počítačových programátorů lze soubor protokolu popsat jako

soubor, který uchovává registr událostí, procesů, zpráv a komunikace mezi různými komunikujícími softwarovými aplikacemi a operačním systémem. Soubory protokolu jsou přítomny ve spustitelném softwaru, operačních systémech a programech, prostřednictvím kterých se zaznamenávají všechny zprávy a podrobnosti o procesech. Každý spustitelný soubor vytváří soubor protokolu, ve kterém jsou zaznamenány všechny činnosti.

– Technopedia

Soubor protokolu je pro nás programátory důležitý pro zaznamenávání důležitých událostí pro určité případy, jako je ladění, vyhodnocování a monitorování. V tomto článku bych se s vámi rád podělil o způsob, jak vytvořit jednoduchý balíček loggeru, který bude implementován na straně serveru pomocí jazyka Golang.

Balíček loggeru v jazyce Golang

Náš kód začíná deklarací klauzule balíčku s názvem „logger“ a importem požadovaných balíčků: „fmt“, „log“, „os“ a „path/filelepath“. Budeme používat dva typy loggeru: Common Log a Error Log. První z nich slouží k zaznamenávání běžných událostí, jako je přihlášení, odhlášení, načtení dat, odeslání dat atd. Naproti tomu druhý slouží k logování specificky chybových událostí. Ve svém jádru je náš logger postaven na objektu log. Proto vytvoříme dvě proměnné „CommonLog“ a „ErrorLog“ (všimněte si, že první písmeno je velké, aby se označilo, že proměnná je exportovaná) s ukazatelem na strukturu loggeru.

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

Dále budeme iniciovat náš logger. Začneme deklarací cesty k souboru. To provedeme tak, že pomocí příkazu Abs z balíčku cesta k souboru ukážeme na umístění našeho souboru s logem (v tomto případě použijeme absolutní umístění souboru s logem). Odkaz na něj pak uchováme v proměnné filePath.

Uvnitř funkce init pokračujeme nastavením příkazu, který se provede při otevření souboru protokolu programem (na toto nastavení se odkazujeme v proměnné openLogfile). To provedeme příkazem „OpenFile“ z balíčku „os“ tak, že zadáme cestu k souboru (pomocí naší proměnné „filePath“ s doplněním názvu souboru), příznaky a fileMode. V této části musíme také rozhodnout o názvu souboru protokolu; v tomto článku pojmenujeme soubor protokolu jako log.log (všimněte si přípony log). Zvláštní pozornost věnujte příznakům a fileMode použitým ve funkci. V tomto případě lze příznaky popsat jako indikátory, které programu říkají, co má s otevřeným souborem dělat. K tomuto účelu použijeme předdefinovanou konstantu z balíčku „os“:

  • os.0_RDWR = otevřít soubor pro čtení a zápis
  • os.0_CREATE = vytvořit nový soubor, pokud žádný neexistuje
  • os.0_APPEND = připojit data do souboru při zápisu

Místo fileMode „0666“ je kód pro nastavení Výchozího oprávnění k úpravě souboru (další čtení o uživatelských oprávněních naleznete zde).

Dále přepíšeme naše proměnné CommonLog a ErrorLog tak, aby obsahovaly nový protokol. Učiníme tak pomocí příkazu „New“ z balíčku „log“ zadáním 1) kanálu pro soubor protokolu, 2) prefixu a požadovaných 3) příznaků.

  1. Kanál pro soubor protokolu: zde použijeme naši proměnnou openLogfile
  2. Prefix: Jedná se o identifikátor nebo náš protokol. Můžeme použít vlastní řetězcové slovo pro určení typu lof (tj. „CommonLogger“ nebo „ErrorLogger“)
  3. Flags: Příznaky této funkce označují informace, které chceme mít v našem logu. K tomuto účelu použijeme vestavěnou funkci z balíčku log v Go (podrobnosti si můžete prohlédnout zde).

Vložení loggeru do našeho kódu

Nakonec bychom mohli vložit náš logger, aby zaznamenával důležité události, které se dějí v našem programu. To lze provést pomocí příkazu „Prinln“, podobného tomu, který jsme použili u balíčku „fmt“.

Tady v logovacím souboru bude mít výsledek práce loggeru podobu:

Je hotovo!“

Tak a je to, lidi, vytvořili jsme balíček loggeru, který lze snadno injektovat jako závislost do našeho programu Go. Doufejme, že může být užitečný pro vás, kolegy programátory.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.