[contribution] logger: votre avis
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:
Code:
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); |
Le principe consiste à initialiser une fois de logger puis n'utiliser que la fonction LOG(...).
Et voici un exemple d'utilisation:
Code:
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 |