Bonjour à tous,
voilà, je sais bien que c'est déjà fais, mais j'ai voulu faire un logger pour plusieurs raisons: pour apprendre certaines bases, parce que ce logger est destiné à une application qui, pour différentes raisons, doit utiliser un minimum de libs externes, etc.
Bref, je vous présentes ici mon header trés épuré (plus de pare-feu de compil, etc.), en espérant que vous aurez un peu de temps pour me dire ce que vous en pensez:
Le principe consiste à initialiser une fois de logger puis n'utiliser que la fonction LOG(...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 enum LOG_LEVEL { LOG_DEBUG, LOG_WARNING, LOG_ERROR, LOG_CRITICAL }; class Logger { public: Logger(); ~Logger(); static int init(const LOG_LEVEL level, const std::string logFilePath, const bool consoleOut); void log(const std::string log, const LOG_LEVEL level = LOG_DEBUG); void log(const std::string log, const bool consoleOut, const LOG_LEVEL level = LOG_DEBUG); static LOG_LEVEL logLevel; static std::string logFile; static bool consoleOutput; static bool isInitialized; private: static bool writeLine(std::string str); std::string logLevel2String(LOG_LEVEL level); }; void LOG(const std::string log, const LOG_LEVEL level = LOG_DEBUG); void LOG(const std::string log, const bool consoleOut, const LOG_LEVEL level = LOG_DEBUG);
Et voici un exemple d'utilisation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Logger::init(logLevel, logFile, true); LOG("test log"); //log simple LOG("test log avec console output", true); //log avec outout sur la console
Partager