Motor OpenGL
Cargando...
Buscando...
Nada coincide
logger.h
1#pragma once
2#include <iostream>
3#include <functional>
4#include <sstream>
5#include <utils/Singleton.h>
6
7namespace cme {
9 class Logger : public Singleton<Logger> {
10 friend class Singleton<Logger>;
11 private:
12 // Puntero a función para redirigir los logs
13 std::function<void(const std::string&)> logCallback = nullptr;
14 public:
15
16 void setCallback(std::function<void(const std::string&)> cb) {
17 logCallback = cb;
18 }
19
20 void clear() {
21 logCallback = nullptr;
22 }
23
24 void send(const std::string& msg) {
25 if (logCallback) logCallback(msg);
26 }
27 private:
28 Logger() = default;
29 ~Logger() {
30 clear();
31 }
32
33 bool init() { return true; }
34 };
35}
36
37inline cme::Logger& logger() {
38 return *cme::Logger::Instance();
39}
40
41// Manda un mensaje a la consola
42#define LOG_INFO(x) { \
43 std::ostringstream _ss; _ss << "[INFO] " << x; \
44 std::cout << _ss.str() << std::endl; \
45 if (cme::Logger::HasInstance()) logger().send(_ss.str()); \
46}
47
48// Manda un aviso a la consola
49#define LOG_WARN(x) { \
50 std::ostringstream _ss; _ss << "[WARN] " << x << " (" << __FILE__ << ":" << __LINE__ << ")"; \
51 std::cout << "\033[33m" << _ss.str() << "\033[0m" << std::endl; \
52 if (cme::Logger::HasInstance()) logger().send(_ss.str()); \
53}
54
55// Manda un error a la consola
56#define LOG_ERROR(x) { \
57 std::ostringstream _ss; _ss << "[ERROR] " << x << " (" << __FILE__ << ":" << __LINE__ << ")"; \
58 std::cerr << "\033[31m" << _ss.str() << "\033[0m" << std::endl; \
59 if (cme::Logger::HasInstance()) logger().send(_ss.str()); \
60}
Se encarga de mandar mensajes a la consola y a la ventana "ConsoleWindow" del motor.
Definition logger.h:9