galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
Loading...
Searching...
No Matches
Log.cpp
Go to the documentation of this file.
1
7
8#include <cstdarg>
9
10#include <Raylib.hpp>
11
13
14#include "Log.hpp"
15
16#ifdef GALAXY_WIN_PLATFORM
19#endif
20
21namespace galaxy
22{
23 Log::Log() noexcept
25 {
26 m_sinks.reserve(2);
27
28 ray::SetTraceLogLevel(ray::LOG_DEBUG);
29 ray::SetTraceLogCallback([](int msgType, const char* text, va_list args) {
30 va_list args_copy;
31 va_copy(args_copy, args);
32
33 const auto size = vsnprintf(nullptr, 0, text, args_copy);
34 va_end(args_copy);
35
36 std::string result(size, '\0');
37 vsnprintf(result.data(), result.size() + 1, text, args);
38
39 switch (msgType)
40 {
41 case ray::LOG_DEBUG:
42 case ray::LOG_INFO:
43 GALAXY_LOG(GALAXY_INFO, "[Raylib] {0}", result);
44 break;
45
46 case ray::LOG_WARNING:
47 GALAXY_LOG(GALAXY_WARN, "[Raylib] {0}", result);
48 break;
49
50 case ray::LOG_ERROR:
51 GALAXY_LOG(GALAXY_ERROR, "[Raylib] {0}", result);
52 break;
53
54 case ray::LOG_FATAL:
55 GALAXY_LOG(GALAXY_FATAL, "[Raylib] {0}", result);
56 break;
57
58 default:
59 GALAXY_LOG(GALAXY_ERROR, "Unknown raylib log message level.");
60 break;
61 }
62 });
63 }
64
65 Log::~Log() noexcept
66 {
67 // We reset min level because logging is done as a singleton.
69 m_sinks.clear();
70 }
71} // namespace galaxy
72
73#ifdef GALAXY_WIN_PLATFORM
75#endif
#define GALAXY_INFO
Log.hpp galaxy.
Definition Log.hpp:23
#define GALAXY_LOG(level, msg,...)
Definition Log.hpp:29
#define GALAXY_WARN
Definition Log.hpp:24
#define GALAXY_FATAL
Definition Log.hpp:26
#define GALAXY_ERROR
Definition Log.hpp:25
#define GALAXY_DISABLE_WARNING_POP
Definition Pragma.hpp:60
#define GALAXY_DISABLE_WARNING(x)
Definition Pragma.hpp:61
#define GALAXY_DISABLE_WARNING_PUSH
Macro for windows platform detection.
Definition Pragma.hpp:59
Log() noexcept
Constructor.
Definition Log.cpp:23
~Log() noexcept
Destructor.
Definition Log.cpp:65
std::vector< std::unique_ptr< Sink > > m_sinks
List of sinks.
Definition Log.hpp:119
LogLevel m_min_level
Minimum level for a message to be logged.
Definition Log.hpp:114
Application.hpp galaxy.
@ INFO
Info Log Level.
Definition LogLevel.hpp:28