Brenta Engine
1.2
Loading...
Searching...
No Matches
logger.hpp
1
// SPDX-License-Identifier: MIT
2
// Author: Giovanni Santini
3
// Mail: giovanni.santini@proton.me
4
// Github: @San7o
5
6
#pragma once
7
8
#include <brenta/subsystem.hpp>
9
#include <oak/oak.hpp>
10
11
#include <fstream>
12
#include <iostream>
13
#include <expected>
14
#include <string>
15
16
#define DEBUG(...) OAK_DEBUG(__VA_ARGS__);
17
#define INFO(...) OAK_INFO(__VA_ARGS__);
18
#define WARN(...) OAK_WARN(__VA_ARGS__);
19
#define ERROR(...) OAK_ERROR(__VA_ARGS__);
20
21
namespace
brenta
22
{
23
24
class
logger
:
public
subsystem
25
{
26
public
:
27
28
struct
config
;
29
class
builder
;
30
31
static
const
std::string subsystem_name;
32
static
const
config
default_config;
33
static
config
init_config;
34
35
// Subsystem interface
36
std::expected<void, subsystem::error> initialize()
override
;
37
std::expected<void, subsystem::error> terminate()
override
;
38
std::string
name
()
override
;
39
bool
is_initialized
()
override
;
40
41
// Constructors / destructors
42
logger
() =
default
;
43
~logger
() =
default
;
44
45
// Member functions
46
47
static
logger
&instance();
48
49
private
:
50
51
static
bool
initialized;
52
53
};
54
55
struct
logger::config
56
{
57
oak::level log_level;
58
std::string log_file;
59
};
60
61
class
logger::builder
:
public
subsystem::builder
62
{
63
private
:
64
65
logger::config
conf = logger::default_config;
66
67
public
:
68
69
builder
() =
default
;
70
~builder
() =
default
;
71
72
builder
&level(oak::level log_level);
73
builder
&file(std::string out_file);
74
75
subsystem
&build();
76
};
77
78
}
// namespace brenta
brenta::logger::builder
Definition
logger.hpp:62
brenta::logger
Definition
logger.hpp:25
brenta::logger::name
std::string name() override
Returns the name of the sybsystem.
Definition
logger.cpp:63
brenta::logger::is_initialized
bool is_initialized() override
Returns true if the subsystem is initialized.
Definition
logger.cpp:68
brenta::subsystem::builder
Builder interface.
Definition
subsystem.hpp:49
brenta::subsystem
Subsystem interface.
Definition
subsystem.hpp:22
brenta::logger::config
Definition
logger.hpp:56
include
brenta
logger.hpp
Generated by
1.9.8