Webserv
Loading...
Searching...
No Matches
Logger.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <sstream>
4#include <string>
5
6namespace utils {
7
20
21class Logger {
22public:
23 static void log(LogLevel, std::string const &);
24 static void setLevel(LogLevel);
25
26private:
28};
29
30#ifndef LOGLEVEL
31#define LOGLEVEL TRACE
32#endif
33
34#ifdef DISABLE_LOGGING
35#define LOG_MSG(level, msg) (void)0
36#define LOG_SMSG(level, msg) (void)0
37#define LOG_CMSG(level, msg) (void)0
38#else
39
40#ifdef __GNUC__
41#define FUNCTION_SIGNATURE __PRETTY_FUNCTION__
42#elif _MSC_VER
43#define FUNCTION_SIGNATURE __FUNCSIG__
44#else
45#define FUNCTION_SIGNATURE __func__
46#endif
47
58#define LOG_MSG(level, msg) \
59 do { \
60 if (level >= utils::LOGLEVEL) { \
61 std::ostringstream oss; \
62 oss << msg; \
63 utils::Logger::log(level, oss.str()); \
64 } \
65 } while (0)
66
67// --- Signature Logging (S-series) ---
68// LOG_SMSG prepends the function signature and a separator
69#define LOG_SMSG(level, msg) \
70 do { \
71 LOG_MSG(level, FUNCTION_SIGNATURE << ": " << msg); \
72 } while (0)
73
74// --- Custom Client-Aware Signature Logging (C-series) ---
75// LOG_CMSG prepends [Client Signature] then [Function Signature] then [Message]
76#define LOG_CMSG(handler, level, msg) \
77 do { \
78 LOG_MSG(level, (handler)->getLogSignature() << " " << FUNCTION_SIGNATURE << ": " << msg); \
79 } while (0)
80
81#endif
82
83#define LOG_TRACE(msg) LOG_MSG(utils::TRACE, msg)
84#define LOG_DEBUG(msg) LOG_MSG(utils::DEBUG, msg)
85#define LOG_INFO(msg) LOG_MSG(utils::INFO, msg)
86#define LOG_WARN(msg) LOG_MSG(utils::WARNING, msg)
87#define LOG_ERROR(msg) LOG_MSG(utils::ERROR, msg)
88#define LOG_FATAL(msg) LOG_MSG(utils::FATAL, msg)
89
90#define LOG_STRACE(msg) LOG_SMSG(utils::TRACE, msg)
91#define LOG_SDEBUG(msg) LOG_SMSG(utils::DEBUG, msg)
92#define LOG_SINFO(msg) LOG_SMSG(utils::INFO, msg)
93#define LOG_SWARN(msg) LOG_SMSG(utils::WARNING, msg)
94#define LOG_SERROR(msg) LOG_SMSG(utils::ERROR, msg)
95#define LOG_SFATAL(msg) LOG_SMSG(utils::FATAL, msg)
96
97#define LOG_CTRACE(handler, msg) LOG_CMSG(handler, utils::TRACE, msg)
98#define LOG_CDEBUG(handler, msg) LOG_CMSG(handler, utils::DEBUG, msg)
99#define LOG_CINFO(handler, msg) LOG_CMSG(handler, utils::INFO, msg)
100#define LOG_CWARN(handler, msg) LOG_CMSG(handler, utils::WARNING, msg)
101#define LOG_CERROR(handler, msg) LOG_CMSG(handler, utils::ERROR, msg)
102#define LOG_CFATAL(handler, msg) LOG_CMSG(handler, utils::FATAL, msg)
103
104} // namespace utils
Definition Logger.hpp:21
static LogLevel threshold_
Definition Logger.hpp:27
static void setLevel(LogLevel)
Definition Logger.cpp:52
static void log(LogLevel, std::string const &)
Definition Logger.cpp:32
Definition filesystem.hpp:9
LogLevel
Defines the severity levels for log messages.
Definition Logger.hpp:12
@ TRACE
Fine-grained messages, typically for detailed debugging.
Definition Logger.hpp:13
@ DEBUG
Information useful for developers during debugging.
Definition Logger.hpp:14
@ INFO
Informational messages about application progress.
Definition Logger.hpp:15
@ ERROR
An error that occurred but the application can recover from.
Definition Logger.hpp:17
@ FATAL
A critical error that will likely lead to termination.
Definition Logger.hpp:18
@ WARNING
Indicates a potential issue that is not a critical error.
Definition Logger.hpp:16