Znam wiele bibliotek rejestrujących, ale nie testowałem ich wielu. (GoogleLog, Pantheios, nadchodzące ulepszenie :: biblioteka dzienników ...)
W grach, szczególnie w zdalnych grach wieloosobowych i grach wielowątkowych, logowanie jest niezbędne do debugowania, nawet jeśli ostatecznie usuniesz wszystkie logi.
Załóżmy, że tworzę grę na PC (nie na konsolę), która potrzebuje dzienników (tryb dla wielu graczy i wielowątkowość i / lub proces wieloprocesowy) i mam dobre powody, aby szukać biblioteki do logowania (np. Nie mam czasu lub jestem nie jestem pewny, czy potrafię poprawnie napisać jedną dla mojej sprawy).
Zakładając, że potrzebuję:
- występ
- łatwość użycia (zezwalaj na przesyłanie strumieniowe lub formowanie itp.)
- niezawodny (nie wyciekaj i nie upaść!
- wieloplatformowy (przynajmniej Windows, MacOSX, Linux / Ubuntu)
Którą bibliotekę logowania poleciłbyś?
Obecnie myślę, że boost :: log jest najbardziej elastyczny (możesz nawet logować się zdalnie!), Ale nie ma dobrej aktualizacji wydajności : służy do wysokiej wydajności, ale nie został jeszcze wydany. Pantheios jest często cytowany, ale nie mam punktów porównawczych dotyczących wydajności i użytkowania. Używam własnej biblioteki od dłuższego czasu, ale wiem, że nie radzi sobie z wielowątkowością, więc jest to duży problem, nawet jeśli jest wystarczająco szybki. Dziennik Google wydaje się interesujący, muszę go tylko przetestować, ale jeśli już porównałeś te biblioteki i więcej, Twoja rada może się przydać.
Gry często wymagają dużej wydajności, a ich debugowanie jest skomplikowane, dlatego dobrze byłoby znać biblioteki rejestrujące, które w naszym konkretnym przypadku mają wyraźne zalety.
Odpowiedzi:
zaloguj się za pomocą gniazda (wystarczy dowolne opakowanie gniazda) + przeglądarka internetowa websocket => najbardziej uniwersalne, dyskretne narzędzie do rejestrowania, zyska godziny debugowania i pozwoli uniknąć bólu oczu.
Teraz bonus:
i wiele innych zadań poza rejestrowaniem:
(prawie wszystkie powyższe czynności można wykonać przy użyciu gniazd flash, zapisz możliwości bazy danych)
Teraz wiem, że konfiguracja wydaje się trochę długa. Ale tak naprawdę to zysk czasu na długi projekt, z trudną sytuacją debugowania (np. W grach). Jest to najpotężniejsza rzecz, z której korzystałem od czasów debuggerów ...
Uwaga 1: jedynym minusem => efekt podwójnej kontroli podczas debugowania kodu sieciowego gry (wpływ na rozmiar bufora gniazda, opóźnienie, przepustowość itp.)
Uwaga 2: niektóre przeglądarki domyślnie wyłączają websocket ze względów bezpieczeństwa, sprawdź about: config, aby upewnić się, że jest włączony.
źródło
Jeśli chodzi o wydajność, uważam, że templog jest praktycznie nie do pokonania . Używa szablonów wyrażeń w celu odroczenia oceny instrukcji rejestrowania, dopóki nie zostanie ustalone, że informacje zostaną w ogóle zarejestrowane. Ponieważ można również częściowo wyłączyć rejestrowanie (w zależności od istotności, pochodzenia i grupy docelowej komunikatu dziennika), niektóre z tych instrukcji rejestrowania mogą zostać wyeliminowane przez kompilator do zerowego kodu dla kompilacji wersji. (Rzeczywiście widziałem, jak to się dzieje z VC.)
Biblioteka niewiele ostatnio zrobiła w bibliotece, a inni w SO zauważyli, że pod pewnymi względami brakuje bagażnika, ale w firmie, w której kiedyś pracowałem, zauważyliśmy, że facet był dość responsywny, a jeden z moich ówczesnych krów robotników nawet dostałem dostęp do zatwierdzenia i dodałem do niego trochę kodu, więc może się okazać, że warto spróbować.
Aby wymienić swoje wymagania:
Najlepsze, jakie znalazłem. Szczególnie atrakcyjna była jego zdolność do wykluczania komunikatów dziennika w czasie kompilacji i całkowitego wyeliminowania ich przez kompilator.
Gdy robisz coś złego, pojawiają się klasyczne okropne komunikaty o błędach kompilatora szablonów-meta, ale jeśli chodzi o łatwość użycia, to
jest trudny do pokonania.
Jednak może być konieczne utworzenie własnych ujść dziennika (tam, gdzie idą komunikaty dziennika), ponieważ kilka wstępnie zapakowanych (stderr, plik, rejestrowanie w systemie Windows itp.) Nie jest aż tak skomplikowanych. Ponieważ głównym celem jest wydajność, istotność całości jest nieco skomplikowana (podobnie jak formatory komunikatów dziennika są dość zaplątane w pochłaniacze dziennika), ale udało nam się to opanować (pamiętam, jak przechodziłem przez to w debugerze, który w tym pomógł) i raz zrozumiałem, że nie było tak trudno napisać własne formaty wiadomości lub logi.
Wykorzystaliśmy go, nie znajdując żadnych tak poważnych problemów. Nie ma tam praktycznie dynamicznej alokacji pamięci, więc trudno sobie nawet wyobrazić, że robi coś złego. Oczywiście testowaliśmy je tylko w jednym produkcie.
Kiedy go używaliśmy, używaliśmy go w Win32, OSX i kilku różnych dystrybucjach Linuksa, w tym Ubuntu.
Co do wielowątkowości: nie korzystaliśmy z tego, ale z tego, co pamiętam z architektury biblioteki lib, wydaje się, że wystarczyło by to obsłużyć w zlewach logów. ICBWT.
źródło
Możesz rozważyć bibliotekę logów na stronie http://www.logog.org , która moim zdaniem może spełniać twoje wymagania. Zastrzeżenie: Napisałem to.
Zobacz także odpowiedzi innych osób na /programming/696321/best-logging-framework-for-native-c .
źródło
Zestaw narzędzi Baical może Cię zainteresować :
źródło