Libftpp
A modern C++ library
logger.hpp
Go to the documentation of this file.
1 #ifndef LOGGER_HPP
2 #define LOGGER_HPP
3 
4 #include <sys/stat.h>
5 #include <unistd.h>
6 
7 #include <cerrno>
8 #include <chrono>
9 #include <ctime>
10 #include <filesystem>
11 #include <fstream>
12 #include <iomanip>
13 #include <mutex>
14 #include <string>
15 
16 #include "../../thread/thread_safe_iostream/thread_safe_iostream.hpp"
17 
18 enum class LogLevel
19 {
20  DEBUG = 0,
21  INFO = 1,
22  WARNING = 2,
23  ERROR = 3
24 };
25 
46 class Logger
47 {
48 private:
49  LogLevel _currentLevel = LogLevel::DEBUG;
50  std::string _logFilename;
51  std::string _outputFilePath;
52 
53  std::mutex _fileMutex;
54  ThreadSafeIOStream _writer;
55  std::ofstream _logFile;
56 
57  std::string getCurrentTime() const;
58  std::string logLevelToString(LogLevel level) const;
59 
60 public:
61  Logger();
62  Logger(const std::string& outputfile, LogLevel level = LogLevel::DEBUG);
63  ~Logger();
64 
65  static Logger& instance();
66 
67  void setLogLevel(LogLevel level);
68  void setOutputFile(const std::string& filename);
69 
70  const std::string getOutputPathFile() const;
71 
72  void log(LogLevel level, const std::string& message);
73  void logConsole(LogLevel level, const std::string& message);
74 };
75 
76 #endif
Logger class for logging messages to console and file with different log levels. This class is implem...
Definition: logger.hpp:47
void setLogLevel(LogLevel level)
Definition: logger.cpp:31
void logConsole(LogLevel level, const std::string &message)
Log a message to the console if the log level is sufficient.
Definition: logger.cpp:127
void log(LogLevel level, const std::string &message)
Log a message to the log file if the log level is sufficient.
Definition: logger.cpp:113
static Logger & instance()
Definition: logger.cpp:25
const std::string getOutputPathFile() const
Definition: logger.cpp:13
Logger()
Definition: logger.cpp:3
~Logger()
Definition: logger.cpp:18
void setOutputFile(const std::string &filename)
Definition: logger.cpp:36
Thread-Safe I/O Stream.
LogLevel
Definition: logger.hpp:19