Przejdź do treści stopki
POMOC .NET

Serilog .NET (jak to działa dla programistów)

Wprowadzenie do konfiguracji rejestratora Serilog i konfiguracji zachowania strukturalnego rejestrowania diagnostycznego w aplikacji .NET

W .NET Core wydajna, ustrukturyzowana konfiguracja logowania Serilog ma kluczowe znaczenie dla diagnozowania i zrozumienia zachowania aplikacji lub zdarzeń logowania. Spośród różnych bibliotek do logowania Serilog wyróżnia się solidnymi możliwościami w zakresie strukturalnych komunikatów logowania. W przeciwieństwie do tradycyjnego logowania, logowanie strukturalne zapisuje komunikaty na poziomie logowania jako dane strukturalne, co ułatwia ich analizę i wyszukiwanie. W tym artykule omówiono, w jaki sposób Serilog usprawnia proces logowania w aplikacjach .NET 6, zapewniając, że każde zdarzenie logowania jest nie tylko ciągiem znaków, ale także obiektem o strukturze umożliwiającej wyszukiwanie. Takie podejście przekształca komunikaty dziennika w strategiczny zasób, umożliwiając skuteczniejsze monitorowanie i analizę.

Zrozumienie funkcji Serilog

Serilog to potężna i elastyczna biblioteka do logowania dla aplikacji .NET. Oferuje różne funkcje, które poprawiają komfort rejestrowania zdarzeń oraz ułatwiają diagnozowanie i analizowanie zachowania aplikacji. W tej sekcji omówimy niektóre z kluczowych funkcji oferowanych przez Serilog.

Rejestrowanie ustrukturyzowane

Jedną z wyróżniających się funkcji Serilog jest obsługa logowania strukturalnego. Zamiast po prostu rejestrować komunikaty jako zwykły tekst, Serilog pozwala na rejestrowanie danych ustrukturyzowanych. Te dane strukturalne mogą mieć postać obiektu JSON, słownika lub dowolnego innego typu, który można zserializować. Rejestrując dane ustrukturyzowane, można łatwo analizować i wyszukiwać zdarzenia logowania za pomocą narzędzi takich jak Elasticsearch lub Splunk.

Elastyczna konfiguracja

Serilog oferuje elastyczne opcje konfiguracji, które pozwalają dostosować zachowanie rejestrowania do potrzeb aplikacji. Serilog można skonfigurować programowo lub za pomocą plików konfiguracyjnych. Ta elastyczność pozwala dostosować zachowanie rejestrowania w czasie wykonywania bez konieczności ponownego uruchamiania aplikacji.

Biblioteki Sink

Serilog udostępnia różne biblioteki sink, które umożliwiają wysyłanie zdarzeń logowania do różnych miejsc docelowych. Niektóre z popularnych bibliotek typu sink to:

  • Serilog.Sinks.Console: Wysyła zdarzenia dziennika do konsoli.
  • Serilog.Sinks.File: Zapisuje zdarzenia dziennika do plików tekstowych.
  • Serilog.Sinks.Seq: Wysyła zdarzenia logowania do Seq, serwera logów strukturalnych.
  • Serilog.Sinks.Elasticsearch: Wysyła zdarzenia logowania do Elasticsearch.

Te biblioteki sink ułatwiają integrację Serilog z różnymi infrastrukturami i narzędziami do logowania.

Wzbogacanie logów

Wzbogacanie logów to funkcja, która pozwala dodawać dodatkowe informacje kontekstowe do zdarzeń logowania. Serilog udostępnia różne moduły rozszerzające, które mogą automatycznie dodawać do zdarzeń logowania informacje, takie jak sygnatura czasowa, identyfikator wątku lub poziom logowania. Można również tworzyć niestandardowe moduły wzbogacające, aby dodawać informacje specyficzne dla danej aplikacji.

Filtrowanie logów

Serilog umożliwia filtrowanie zdarzeń dziennika na podstawie różnych kryteriów. Można skonfigurować filtry, aby wykluczyć lub uwzględnić zdarzenia dziennika na podstawie poziomu dziennika, wartości właściwości lub dowolnego innego warunku. Ta funkcja filtrowania pozwala skupić się na zdarzeniach dziennika, które są najbardziej istotne dla analizy lub rozwiązywania problemów.

Dzięki zrozumieniu i wykorzystaniu tych funkcji możesz wykorzystać potencjał Serilog do ulepszenia możliwości rejestrowania zdarzeń i uzyskania cennych informacji na temat zachowania aplikacji.

Rejestrowanie ustrukturyzowane: podstawowa funkcja

Główną zaletą Serilog jest przekształcanie komunikatów dziennika w dane ustrukturyzowane. W przeciwieństwie do innych bibliotek logowania, które generują zwykły tekst, Serilog tworzy logi w ustrukturyzowanym formacie JSON, co ułatwia analizowanie i wyszukiwanie danych logów. Ta funkcja ma kluczowe znaczenie dla nowoczesnych aplikacji, w których analiza logów i monitorowanie stanowią integralną część analizy operacyjnej. Strukturalne logi są szczególnie przydatne, gdy komunikat logowania jest wprowadzany do systemów takich jak stos ELK (Elasticsearch, Logstash, Kibana) w celu przeprowadzenia zaawansowanej analizy.

Szczegółowe informacje o zdarzeniach w dzienniku

Serilog wzbogaca zdarzenia logowania o informacje kontekstowe, zapewniając kompleksowy obraz tego, co dzieje się wewnątrz aplikacji. Każde zdarzenie dziennika może zawierać wiele szczegółów wykraczających poza prosty komunikat dziennika, w tym znaczniki czasu, poziomy dziennika, szczegóły wyjątków i właściwości niestandardowe. To sprawia, że Serilog przewyższa inne biblioteki logowania pod względem szczegółowości i przejrzystości logów, oferując programistom kluczowe informacje na temat zachowania i wydajności aplikacji.

Wdrażanie Serilog w ASP.NET Core

Aby zintegrować Serilog z aplikacją .NET 6 ASP.NET Core, zacznij od skonfigurowania Serilog za pomocą pliku appsettings.json lub sekcji konfiguracyjnej Serilog. Ta konfiguracja określa, w jaki sposób, gdzie i jakie dane dziennika są rejestrowane.

Za pośrednictwem pliku konfiguracyjnego

Użyj pliku konfiguracyjnego JSON, aby zdefiniować poziomy logowania, miejsca docelowe wyjścia (takie jak pliki logów lub konsola) oraz format wyjściowy logów. Podejście oparte na pliku konfiguracyjnym zapewnia elastyczność w zakresie zmiany zachowania rejestrowania bez konieczności modyfikowania kodu. Odbywa się to poprzez określenie ustawień w pliku appsettings.json, co pozwala skierować wyjście logów do różnych miejsc, takich jak konsola, plik, a nawet usługi zarządzania logami w chmurze.

Programowo w kodzie

Alternatywnie można skonfigurować Serilog bezpośrednio w kodzie, używając klasy LoggerConfiguration. Metoda ta jest często wykorzystywana do konfiguracji bardziej złożonych scenariuszy logowania, takich jak dynamiczne poziomy logowania lub niestandardowe odbiorniki logów. Na przykład można skonfigurować plik dziennika typu rolling, który tworzy nowy plik dziennika w określonych odstępach czasu lub po osiągnięciu określonego rozmiaru, zapewniając efektywne zarządzanie plikami dziennika.

// Create a logger instance with a rolling log file that creates a new log file every day
var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day) 
    .CreateLogger();
// Create a logger instance with a rolling log file that creates a new log file every day
var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day) 
    .CreateLogger();
' Create a logger instance with a rolling log file that creates a new log file every day
Dim logger = (New LoggerConfiguration()).WriteTo.File("logs/myapp.txt", rollingInterval:= RollingInterval.Day).CreateLogger()
$vbLabelText   $csharpLabel

Integracja z ASP.NET Core

Integracja Serilog z .NET Core polega na dodaniu pakietu Serilog za pomocą konsoli menedżera pakietów oraz skonfigurowaniu loggera w pliku Program.cs. Instrukcje var builder i var app w .NET 6 płynnie włączają Serilog do infrastruktury logowania aplikacji. Proces ten zastępuje domyślny moduł logowania biblioteką Serilog, zapewniając, że wszystkie komunikaty logowania są przetwarzane przez potok Serilog.

var builder = WebApplication.CreateBuilder(args);

// Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));

var app = builder.Build();
var builder = WebApplication.CreateBuilder(args);

// Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));

var app = builder.Build();
Dim builder = WebApplication.CreateBuilder(args)

' Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog(Function(ctx, lc) lc.WriteTo.Console().ReadFrom.Configuration(ctx.Configuration))

Dim app = builder.Build()
$vbLabelText   $csharpLabel

Integracja pakietu Iron Software Suite z Serilog w ASP.NET Core

Pakiet Iron Software Suite oferuje zbiór bibliotek C#, które mogą znacznie zwiększyć możliwości rejestrowania w aplikacji .NET 6 przy użyciu Serilog. Ten pakiet zawiera różne narzędzia, takie jak IronPDF, IronOCR, IronXL, IronZIP, IronQR, IronBarcode i IronWebScraper, z których każde oferuje unikalne funkcje, które można zintegrować z aplikacją ASP.NET Core w celu zwiększenia jej możliwości rejestrowania i przetwarzania danych.

Aby zintegrować pakiet Iron Software Suite z Serilogiem w aplikacji ASP.NET Core, wykonaj następujące ogólne kroki:

  1. Zainstaluj wymagane pakiety Iron Software Suite za pomocą NuGet lub konsoli menedżera pakietów.
  2. Skonfiguruj Serilog przy użyciu wybranych bibliotek sink, takich jak Serilog.Sinks.File dla plików dziennika lub Serilog.Sinks.Console dla wyjścia konsoli.
  3. Wykorzystaj biblioteki pakietu Iron Software Suite w kodzie swojej aplikacji, aby wykorzystać ich funkcjonalności i usprawnić proces logowania. Może to obejmować takie zadania, jak generowanie plików PDF, odczytywanie BarCodes lub pobieranie treści z sieci.

Dzięki integracji pakietu Iron Software Suite z Serilogiem możesz rozszerzyć możliwości rejestrowania danych w swojej aplikacji ASP.NET Core i wykorzystać dodatkowe funkcje oferowane przez te biblioteki.

IronPDF

IronPDF umożliwia tworzenie, odczytywanie i edycję plików PDF w aplikacjach .NET. Może to być szczególnie przydatne w połączeniu z Serilogiem do generowania raportów PDF z danymi logów, umożliwiając łatwą dystrybucję i przeglądanie informacji logów w standardowym formacie.

Serilog .NET (Jak to działa dla programisty): Rysunek 1 – IronPDF

IronOCR

Biblioteka IronOCR do optycznego rozpoznawania znaków (OCR), która może przekształcać obrazy na tekst w 125 językach. Funkcja ta może być wykorzystywana w scenariuszach logowania, w których dane tekstowe muszą być wyodrębniane z obrazów lub zeskanowanych dokumentów, wzbogacając w ten sposób dane logowania o dodatkowe informacje kontekstowe.

Serilog .NET (Jak to działa dla programisty): Rysunek 2 – IronOCR

IronXL

IronXL zapewnia funkcjonalność umożliwiającą pracę z programem Excel bez konieczności korzystania z Office Interop. Może to być szczególnie korzystne do celów rejestrowania, ponieważ dane dziennika można eksportować do programu Excel w celu dalszej analizy i raportowania, oferując znany interfejs do manipulacji danymi i ich wizualizacji.

Serilog .NET (Jak to działa dla programisty): Rysunek 3 – IronXL

IronBarcode

IronBarcode ułatwia odczytywanie i zapisywanie kodów QR oraz kodów kreskowych. Biblioteka ta umożliwia osadzanie lub wyodrębnianie zakodowanych informacji z plików dziennika, zwiększając bezpieczeństwo i identyfikowalność rejestrowanych danych.

Serilog .NET (Jak to działa dla programisty): Rysunek 4 – IronBarcode

Wnioski

Zintegrowanie pakietu Iron Software Suite z Serilogiem w aplikacjach ASP.NET Core nie tylko wzbogaca proces logowania, ale także dodaje warstwę wszechstronności w obsłudze, prezentacji i analizie danych logów. Niezależnie od tego, czy chodzi o generowanie raportów PDF, przetwarzanie logów opartych na obrazach, obsługę danych Excel, zarządzanie rozmiarami plików logów, zabezpieczanie informacji logów czy scrapowanie treści internetowych, połączenie Serilog z Iron Software Suite otwiera niezliczone możliwości zaawansowanego logowania i przetwarzania danych w środowiskach .NET 6.

Iron Software Suite oferuje bezpłatną wersję próbną bibliotek C# firmy Iron Software, co stanowi doskonałą okazję dla programistów do zapoznania się z ich funkcjami i możliwościami w zakresie ulepszania aplikacji ASP.NET Core, szczególnie w połączeniu z Serilogiem, który zapewnia zaawansowane funkcje rejestrowania i przetwarzania danych.

Często Zadawane Pytania

W jaki sposób Serilog usprawnia rejestrowanie w aplikacjach .NET?

Serilog usprawnia rejestrowanie w aplikacjach .NET poprzez przekształcanie zdarzeń logowania w uporządkowane obiekty, które można przeszukiwać, co pozwala na lepszą diagnostykę i analizę w porównaniu z tradycyjnym rejestrowaniem w postaci zwykłego tekstu.

Jakie są zalety korzystania z logowania strukturalnego w Serilog?

Strukturalne logowanie za pomocą Serilog zapewnia łatwiejsze parsowanie i wyszukiwanie danych logów, co jest przydatne do analizy za pomocą narzędzi takich jak Elasticsearch, poprawiając inteligencję operacyjną i monitorowanie.

Jak skonfigurować Serilog w aplikacji .NET 6?

W aplikacji .NET 6 Serilog można skonfigurować za pomocą klasy `LoggerConfiguration` lub poprzez pliki konfiguracyjne, takie jak `appsettings.json`, co pozwala na elastyczne dostosowywanie zachowania rejestrowania bez zmian w kodzie.

Jakie opcje integracji oferuje Serilog dla różnych miejsc docelowych rejestrowania?

Serilog oferuje różne biblioteki sink do integracji, umożliwiające wysyłanie zdarzeń logowania do różnych miejsc docelowych, takich jak konsole, pliki tekstowe lub serwery, np. Elasticsearch lub Seq.

Jaką rolę odgrywają modyfikatory w logowaniu Serilog?

Enrichery w Serilog dodają informacje kontekstowe do zdarzeń logowania, takie jak znaczniki czasu i poziomy logowania, a także można tworzyć niestandardowe enrichery, aby uwzględnić konkretne dane aplikacji, zwiększając wartość informacyjną logów.

Czy Serilog można łączyć z innymi bibliotekami w celu zwiększenia funkcjonalności?

Tak, Serilog można łączyć z bibliotekami takimi jak IronPDF, IronOCR i IronXL, które oferują funkcje takie jak generowanie plików PDF, przetwarzanie OCR i manipulowanie plikami Excel, wzbogacając proces rejestrowania i obsługę danych w aplikacjach .NET.

Jak mogę generować raporty PDF z danymi dziennika przy użyciu .NET?

W środowisku .NET można generować raporty PDF z danymi dziennika przy użyciu bibliotek takich jak IronPDF, które umożliwiają tworzenie, odczytywanie i edycję plików PDF, co pozwala na integrację z systemami rejestrowania w celu tworzenia szczegółowych raportów dziennika.

Czy w środowisku .NET możliwe jest eksportowanie danych dziennika do programu Excel w celu analizy?

Tak, korzystając z bibliotek takich jak IronXL, można manipulować plikami Excel bez konieczności stosowania Office Interop, co pozwala na eksport danych dziennika do programu Excel w celu dalszej analizy i raportowania w aplikacjach .NET.

Jakie korzyści biblioteki Iron Software wnoszą do systemów logowania, takich jak Serilog?

Biblioteki Iron Software wzbogacają systemy logowania, takie jak Serilog, zapewniając dodatkowe funkcje, takie jak tworzenie plików PDF, OCR i manipulowanie plikami Excel, co zwiększa możliwości przetwarzania danych i raportowania w środowiskach .NET.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie