Logowanie aplikacji. Czego używacie i dlaczego?

2

Do tej pory używaliśmy log4net w aplikacji rozwijanej co najmniej od 2010 roku. Niebawem będziemy rozpoczynać pracę nad nową wersją aplikacji i może czas na zmianę. Czy używacie też, czy czego innego i dlaczego?

Założyłem też ten wątek aby @somekind mógł rozwinąć tę myśl ;)

6
Console.WriteLine("test")

Ja używam Serlioga bo: minimum konfiguracji, zrzuca do pliku z podziałem na daty. (Jestem prostym człowiekiem)

Ogólnie taki logger powinien być konfigurowalny w 15 min, a nie dłubanie 2 dni żeby logger logował do pliku. C'mon, jest apka do napisania, a nie boilerplateowanie loggera.

1

serilog + seq - w aplikacjach webowych fajnie się sprawdza

1

@Sarrus: z jakiej branży to apka?

0

Zarządzanie budynkiem

3

Widzę na nugecie, że po paru latach spokoju ktoś znowu zaczął tego trupa ruszać. :(

To jest jakiś przedwieczny klon bilblioteki Javowej, klony biblotek Javowych są zazwyczaj słabe, bo pisane dla Javy, więc kopiują jej pomysły i ograniczenia. W tym przypadku akurat chociażby brakiem pobierania pewnych informacji w locie (trzeba samemu podać nazwę klasy, dla której logger jest tworzony), albo javowym formatowaniem stringów (z procentami). (Żeby nie było, lubię procenty, nawet podczas programowania, ale nie w kodzie).
Pamiętam też, że były jakieś problemy z kontrolowaniem leveli, w sensie ustawienie level po postu nie działalo, trzeba było obchodzić dając minLevel i maxLevel.

Znacznie bardziej lubię NLoga, który po prostu działa, i ma czytelniejszą konfigurację. A ostatnio używam raczej Seriloga, zresztą jak widzę, to jest to kierunek, w którym zmierza spora część softu.

0
somekind napisał(a):

W tym przypadku akurat chociażby brakiem pobierania pewnych informacji w locie (trzeba samemu podać nazwę klasy, dla której logger jest tworzony),

Można przekazać typ :P. My mamy to rozwiązane infrastrukturalnie przez kontener, który pobiera obiekt dla konkretnego typu i z konkretnego repozytorium.

albo javowym formatowaniem stringów (z procentami). (Żeby nie było, lubię procenty, nawet podczas programowania, ale nie w kodzie).

Tu nawet nie wiem o czym piszesz, bo żadnych nigdy procentów nie widziałem (a też lubię). Wcześniej korzystało się z DebugFormat, InfoFormat itp. Obecnie mamy interpolację stringów, więc też ten problem odszedł do lamusa

Znacznie bardziej lubię NLoga, który po prostu działa, i ma czytelniejszą konfigurację. A ostatnio używam raczej Seriloga, zresztą jak widzę, to jest to kierunek, w którym zmierza spora część softu.

Tak też zauważyłem rosnącą popularność Seriloga. Jakieś wrażenia?

0
Sarrus napisał(a):

Można przekazać typ :P.

No, a w NLogu się woła GetCurrentClassLogger() i nie trzeba niczego przekazywać. W log4net to pięknie wygląda, gdy to tworzenie loggera jest kopiowane z klasy do klasy bez zmiany tego oryginalnego typu. I potem wszystkie logi idą z jednej klasy.

Tu nawet nie wiem o czym piszesz, bo żadnych nigdy procentów nie widziałem (a też lubię).

Procenty, procenty, wszędzie procenty:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="100KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

Wcześniej korzystało się z DebugFormat, InfoFormat itp. Obecnie mamy interpolację stringów, więc też ten problem odszedł do lamusa

A no właśnie, ten dziwny podział metod na te z formatem i bez formatowania. To też przykład jakichś zaszłości historycznych z oryginału, bo w C# to nigdy nie było potrzebne. Teraz faktycznie jest przyjemniej, no ale żeby Microsoft nowymi wersjami C# łatał biblioteki od zewnętrznych dostawców? Aberracja jakaś.

Tak też zauważyłem rosnącą popularność Seriloga. Jakieś wrażenia?

Nie wkurza mnie, a to już dużo. ;)

2

Jak firma ma $$$ to teraz loguje się do chmury. Ba nie tylko loguje ale robi observability czyli zbiera logi, metryki i trace'y. Po co to komu? Przy 100 mikroserwisach zaagregowanie logów w jednym miejscu umożliwia szybsze rozwiązywanie problemów i odnajdywanie korelacji.

Wersja na cebulę to stack ELK.
Znani dostawcy chmurowi observability: SumoLogic, DataDog, Dynatrace, GrayLog

(Pracuje w SumoLogic żeby mi nikt nie wytykał ukrytego lokowania produktu).

PS. Druga strona medalu jest taka że mając już zagregowane logi i metryki łatwo tworzyć alarmy i alerty, np. gdy liczba błędów przekracza pewnien poziom lub mamy ponad X wiadomości czekających na przetworzenie w Kafce.

1

Serilog jest bardzo przyjemny, aczkolwiek brakuje mi sinka z kolorowaniem na konsole, więc zawsze muszę jakiś minimalny wrapper na to narzucić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0