Med dess bokstavliga betydelse från Oxford Dictionary kan ordet ”log” definieras som ”ett officiellt protokoll över händelser under en viss tidsperiod, särskilt en resa på ett fartyg eller flygplan”. Inom programmeringssfären använder programmerare även detta begrepp för att föra en förteckning över viktiga händelser och aktiviteter som har betydelse för att ett program ska kunna köras korrekt. Aktiviteten eller skapandet av en logg kallas loggning och verktygen för att utföra en sådan uppgift kallas loggare.

Loggen dokumenteras i en fil som kallas loggfil. I dataprogrammeringstermen kan en loggfil beskrivas som

en fil som håller ett register över händelser, processer, meddelanden och kommunikation mellan olika kommunicerande mjukvaruprogram och operativsystemet. Loggfiler finns i körbara programvaror, operativsystem och program där alla meddelanden och processdetaljer registreras. Varje körbar fil producerar en loggfil där alla aktiviteter noteras.

– Technopedia

En loggfil är viktig för oss programmerare att hålla reda på viktiga händelser för vissa fall som felsökning, utvärdering och övervakning. I den här artikeln vill jag dela med mig av ett sätt att skapa ett enkelt loggerpaket som ska implementeras på serversidan med Golang.

Loggerpaket i Golang

Vår kod börjar med att deklarera en paketklausul som heter ”logger” och importera nödvändiga paket: Vi börjar med att skapa ett paket som vi använder i vår första procedur och tar med oss följande paket: ”fmt”, ”log”, ”os” och ”path/filepath”. Vi kommer att använda två typer av logger: Vi kommer att använda oss av två typer av loggare: Common Log och Error Log. Den första används för att logga vanliga händelser som inloggning, utloggning, hämtade data, postdata osv. Å andra sidan används den senare för att logga specifikt för felhändelser. I sin kärna bygger vår loggare på ett loggobjekt. Därför kommer vi att skapa två variabler ”CommonLog” och ”ErrorLog” (lägg märke till att den första bokstaven är stor bokstav för att markera att variabeln är exporterad) med en pekare till logger struct.

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

Nästan kommer vi att initiera vår logger. Låt oss börja med att deklarera filvägen. Det gör vi genom att peka på platsen för vår loggfil med hjälp av kommandot Abs från paketet file path (i det här fallet använder vi den absoluta platsen för loggfilen). Vi behåller sedan referensen inom variabeln filePath.

Inom init-funktionen fortsätter vi med att ställa in det kommando som ska utföras när loggfilen öppnas av programmet (denna inställning refereras inom variabeln openLogfile). Vi gör detta med kommandot ”OpenFile” från paketet ”os” genom att ange filvägen (med hjälp av vår variabel ”filePath” utöver filnamnet), flags och fileMode. I den här delen måste vi också bestämma namnet på loggfilen; i den här artikeln namnger vi loggfilen log.log (lägg märke till logtillägget). Särskild uppmärksamhet gäller flags och fileMode som används i funktionen. I det här fallet kan flaggorna beskrivas som indikatorer som talar om för programmet vad det ska göra med den öppnade filen. För det ändamålet använder vi den fördefinierade konstanten från paketet ”os”:

  • os.0_RDWR = öppna filen skrivläst
  • os.0_CREATE = skapa en ny fil om ingen finns
  • os.0._APPEND = bifoga data till filen vid skrivning

Men fileMode ”0666” är koden för att ställa in standardfilbehörighet för att ändra filen (mer information om användarbehörighet finns här).

Därutöver kommer vi att skriva om våra variabler CommonLog och ErrorLog så att de innehåller en ny logg. Vi gör detta med kommandot ”New” från paketet ”log” genom att ange 1) kanalen för loggfilen, 2) ett prefix och krävs 3) flaggor.

  1. Kanal för loggfilen: vi använder vår openLogfile-variabel här
  2. Prefix: Detta är identifieraren för vår logg. Vi kan använda anpassade strängord för att definiera typen av lof (t.ex. ”CommonLogger” eller ”ErrorLogger”)
  3. Flags: Flaggor:: Flaggor för den här funktionen anger den information som vi vill ha i vår logg. För detta ändamål använder vi den inbyggda funktionen från loggpaketet i Go (detaljer kan ses här).

Injicera loggare i vår kod

Slutligt kan vi injicera vår loggare för att logga viktiga händelser som sker i vårt program. Detta kan göras genom att använda kommandot ”Prinln” som det vi använde med paketet ”fmt”.

Här i loggfilen kommer resultatet av loggern att se ut så här:

Det är klart!

Så, det var det, killar! vi har skapat ett loggare-paket som enkelt kan injiceras som ett beroende i vårt Go-program. Förhoppningsvis kan det vara användbart för er andra programmerare.

Lämna ett svar

Din e-postadress kommer inte publiceras.