C++:
Rejestrowanie zdarzeń
Jak to zrobić:
Załóżmy, że pracujesz na systemie Linux i chcesz wrzucać swoje logi do pliku, korzystając z dobrego, starego C++. Będziesz chciał dołączyć biblioteki <iostream>
i <fstream>
do operacji na plikach. Oto szybki przykład:
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ofstream logFile("appLog.txt", std::ios::app); // Otwarcie w trybie dopisywania
if (!logFile.is_open()) {
std::cerr << "Wystąpił problem z otwarciem pliku logów!" << std::endl;
return 1;
}
logFile << "Aplikacja uruchomiona" << std::endl;
// ... gdzieś w logice twojej aplikacji
logFile << "Wystąpiło ważne zdarzenie" << std::endl;
// Nie zapomnij zamknąć strumienia pliku
logFile.close();
return 0;
}
Jeśli będziesz śledził swój plik logów używając tail -f appLog.txt
, powinieneś zobaczyć:
Aplikacja uruchomiona
Wystąpiło ważne zdarzenie
Świetnie, masz oznaczone czasem zapisy zdarzeń!
W Głąb Tematu
Logowanie jest tak stare jak samo obliczeniowe, sięgając korzeniami dosłownych znaków na papierze, aby śledzić co dawne komputery robiły. W nowoczesnej erze chodzi już o wyrafinowane rozwiązania programowe. Masz bezpośrednie logowanie do pliku, jak w szybkim i brudnym przykładzie wyżej, albo możesz skorzystać z bardziej zaawansowanego frameworku logowania, takiego jak Log4cpp czy Boost.Log w królestwie C++; te niezłe narzędzia oferują poziomy logowania, kontrolę formatu i więcej.
Mówiąc o poziomach, dobre praktyki logowania obejmują używanie zróżnicowanych poziomów powagi - informacje, debugowanie, ostrzeżenia, błędy, fatalne - dzięki czemu można filtrować szum, gdy próbujesz zgnieść błędy lub dowiedzieć się, dlaczego twoja aplikacja zachowuje się jak humorzasty nastolatek.
Jeśli chodzi o wydajność, nie bądź niedbały z logowaniem. Nadmierne logowanie może przekształcić twoją błyskawicznie szybką aplikację w ślamazarny maraton, obciążyć systemy plików, a nawet kosztować cię dodatkowe pieniądze za przechowywanie danych, jeżeli używasz chmury. Kluczowe jest znalezienie właściwej równowagi: loguj to, co potrzebujesz, i nic więcej.
Zobacz Również
Dla tych z was, którzy chcą iść o krok dalej ze swoimi praktykami logowania, sprawdźcie:
- Biblioteka Boost.Log dla kilku funkcji logowania na poziomie ciężkich działań.
- Biblioteka glog od Google, jeśli interesuje was, czego używają technologiczni giganci do logowania swoich aplikacji.
- Biblioteka Log4cpp dla konfigurowalnego mechanizmu logowania.
A dla tych, którzy chcą trochę więcej teorii na temat dlaczego i jak logować, zapoznajcie się z:
- Ten wątek na Stack Overflow o najlepszych praktykach logowania da ci recenzowane przez społeczność pogłębienie tematu.