Przez jego dosłowne znaczenie z Oxford Dictionary, słowo „log” może być zdefiniowane jako „oficjalny zapis wydarzeń w określonym czasie, zwłaszcza podróży na statku lub w samolocie”. W sferze programowania, programiści używają tego terminu również do prowadzenia rejestru ważnych zdarzeń i działań, które mają znaczenie dla prawidłowego działania programu. Działalność lub tworzenie dziennika nazywa się logowaniem, a narzędzia do wykonania takiego zadania nazywa się logger.

Dziennik jest udokumentowany w pliku zwanym plikiem dziennika. W terminie programisty komputerowego, Plik dziennika może być opisany jako

plik, który utrzymuje rejestr zdarzeń, procesów, wiadomości i komunikacji między różnymi komunikującymi się aplikacjami oprogramowania i systemem operacyjnym. Pliki dziennika są obecne w oprogramowaniu wykonywalnym, systemach operacyjnych i programach, w których wszystkie wiadomości i szczegóły procesów są rejestrowane. Każdy plik wykonywalny produkuje plik dziennika, gdzie wszystkie działania są noted.

– Technopedia

Plik dziennika jest ważne dla nas programistów do śledzenia ważnych zdarzeń dla niektórych przypadkach, takich jak debugowanie, oceny i monitorowania. W tym artykule chciałbym podzielić się sposobem na stworzenie prostego pakietu loggera do zaimplementowania po stronie serwera za pomocą Golanga.

Pakiet loggera w Golangu

Nasz kod zaczyna się od zadeklarowania klauzuli pakietu o nazwie „logger” i zaimportowania wymaganych pakietów: „fmt”, „log”, „os” oraz „path/filepath”. Będziemy używać dwóch typów loggerów: Common Log i Error Log. Pierwszy z nich służy do rejestrowania typowych zdarzeń, takich jak logowanie, wylogowywanie, pobieranie danych, wysyłanie danych, itp. Z drugiej strony, ten drugi jest używany do logowania specyficznych zdarzeń związanych z błędami. W swojej istocie, nasz logger jest zbudowany na bazie obiektu log. Dlatego też, stworzymy dwie zmienne „CommonLog” oraz „ErrorLog” (zauważ, że pierwsza litera jest wielka, aby zaznaczyć, że zmienna jest eksportowana) ze wskaźnikiem do struktury loggera.

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

Następnie, zainicjujemy nasz logger. Zacznijmy od zadeklarowania ścieżki do pliku. Robimy to poprzez wskazanie lokalizacji naszego pliku logu za pomocą polecenia Abs z pakietu file path (w tym przypadku używamy bezwzględnej lokalizacji pliku logu). Następnie zachowujemy odwołanie w zmiennej filePath.

Wewnątrz funkcji init kontynuujemy poprzez ustawienie polecenia, które zostanie wykonane, gdy plik dziennika zostanie otwarty przez program (do tego ustawienia odwołujemy się w zmiennej openLogfile). Robimy to za pomocą polecenia „OpenFile” z pakietu „os”, podając ścieżkę do pliku (używając naszej zmiennej „filePath” oprócz nazwy pliku), flagi oraz fileMode. W tej części musimy również zdecydować o nazwie pliku dziennika; w tym artykule, nazwiemy plik dziennika jako log.log (zauważ rozszerzenie log). Szczególną uwagę należy zwrócić na flagi oraz fileMode użyte w funkcji. W tym przypadku flagi można opisać jako wskaźniki, które mówią programowi, co ma zrobić z otwartym plikiem. Do tego celu używamy predefiniowanych stałych z pakietu „os”:

  • os.0_RDWR = otwórz plik czytaj-zapisz
  • os.0_CREATE = utwórz nowy plik, jeżeli żaden nie istnieje
  • os.0_APPEND = dołącz dane do pliku podczas pisania

W międzyczasie fileMode „0666” jest kodem ustawiającym domyślne uprawnienia do modyfikacji pliku (dalsze czytanie o uprawnieniach użytkownika można zobaczyć tutaj).

Ponadto, przepiszemy nasze zmienne CommonLog i ErrorLog, aby zawierały nowy log. Zrobimy to za pomocą polecenia „New” z pakietu „log” określając 1) kanał dla pliku logu, 2) prefiks i wymagane 3) flagi.

  1. Kanał dla pliku logu: używamy tutaj naszej zmiennej openLogfile
  2. Prefix: To jest identyfikator lub nasz dziennik. Możemy użyć niestandardowego słowa łańcuchowego, aby określić typ logu (np. „CommonLogger” lub „ErrorLogger”)
  3. Flagi: Flagi dla tej funkcji oznaczają informacje, które chcemy mieć w naszym logu. Do tego celu używamy wbudowanej funkcji z pakietu log w Go (szczegóły można zobaczyć tutaj).

Wstrzykiwanie loggera do naszego kodu

Na koniec, możemy wstrzyknąć nasz logger do rejestrowania ważnych zdarzeń, które dzieją się w naszym programie. Można to zrobić za pomocą polecenia „Prinln”, tak jak to zrobiliśmy z pakietem „fmt”.

W pliku dziennika, wynik działania loggera będzie miał następującą postać:

It is Done!

Więc, to jest to, chłopaki! Stworzyliśmy pakiet loggera, który może być łatwo wstrzyknięty jako zależność w naszym programie Go. Mam nadzieję, że może on być przydatny dla was, koledzy programiści.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.