wren
Vulkan-based game engine
Toggle main menu visibility
Loading...
Searching...
No Matches
log.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <boost/describe.hpp>
4
#include <format>
5
#include <iostream>
6
#include <print>
7
8
#include "
ansi.hpp
"
9
#include "
wren/utils/enums.hpp
"
10
#include "
wren/utils/format.hpp
"
// IWYU pragma: export
11
12
namespace
wren::log
{
13
14
enum class
LogLevel
{
15
Trace
= 0,
16
Debug
,
17
Info
,
18
Warn
,
19
Error
,
20
Fatal
,
21
};
22
23
BOOST_DESCRIBE_ENUM(
LogLevel
,
Trace
,
Debug
,
Info
,
Warn
,
Error
,
Fatal
)
24
25
static auto
get_log_level
() {
26
static
std::optional<LogLevel> level = std::nullopt;
27
if
(!level.has_value()) {
28
if (getenv(
"WREN_LOG_LEVEL"
) != nullptr) {
29
const auto l_opt =
30
utils::string_to_enum<LogLevel>(getenv(
"WREN_LOG_LEVEL"
), true);
31
if (l_opt) level = l_opt.value_or(LogLevel::Info);
32
}
else
{
33
level = LogLevel::Info;
34
}
35
}
36
37
return
level.value();
38
}
39
40
template
<
typename
... Args>
41
void
trace
(
const
std::format_string<Args...>& fmt, Args&&... args) {
42
if
(
get_log_level
() <=
LogLevel::Trace
) {
43
std::println(std::cout,
"{}[trace]{} {}"
,
ansi::kGrey
,
ansi::kReset
,
44
std::format(fmt, std::forward<Args>(args)...));
45
}
46
}
47
48
template
<
typename
... Args>
49
void
debug
(
const
std::format_string<Args...>& fmt, Args&&... args) {
50
if
(
get_log_level
() <=
LogLevel::Debug
) {
51
std::println(std::cout,
"{}[debug]{} {}"
,
ansi::kBlue
,
ansi::kReset
,
52
std::format(fmt, std::forward<Args>(args)...));
53
}
54
}
55
56
template
<
typename
... Args>
57
void
info
(
const
std::format_string<Args...>& fmt, Args&&... args) {
58
if
(
get_log_level
() <=
LogLevel::Info
) {
59
std::println(std::cout,
"{}[info]{} {}"
,
ansi::kGreen
,
ansi::kReset
,
60
std::format(fmt, std::forward<Args>(args)...));
61
}
62
}
63
64
template
<
typename
... Args>
65
void
warn
(
const
std::format_string<Args...>& fmt, Args&&... args) {
66
if
(
get_log_level
() <=
LogLevel::Warn
) {
67
std::println(std::cout,
"{}[warn]{} {}"
,
ansi::kOrange
,
ansi::kReset
,
68
std::format(fmt, std::forward<Args>(args)...));
69
}
70
}
71
72
template
<
typename
... Args>
73
void
error
(
const
std::format_string<Args...>& fmt, Args&&... args) {
74
if
(
get_log_level
() <=
LogLevel::Error
) {
75
std::println(std::cerr,
"{}[error]{} {}"
,
ansi::kRed
,
ansi::kReset
,
76
std::format(fmt, std::forward<Args>(args)...));
77
}
78
}
79
80
template
<
typename
... Args>
81
void
fatal
(
const
std::format_string<Args...>& fmt, Args&&... args) {
82
if
(
get_log_level
() <=
LogLevel::Fatal
) {
83
std::print(std::cerr,
"{}[fatal]{} {}"
,
ansi::kRed
,
ansi::kReset
,
84
std::format(fmt, std::forward<Args>(args)...));
85
}
86
std::terminate();
87
}
88
89
}
// namespace wren::log
ansi.hpp
enums.hpp
format.hpp
wren::ansi::kBlue
constexpr auto kBlue
Definition
ansi.hpp:33
wren::ansi::kGrey
constexpr auto kGrey
Definition
ansi.hpp:32
wren::ansi::kReset
constexpr auto kReset
Definition
ansi.hpp:29
wren::ansi::kGreen
constexpr auto kGreen
Definition
ansi.hpp:34
wren::ansi::kOrange
constexpr auto kOrange
Definition
ansi.hpp:30
wren::ansi::kRed
constexpr auto kRed
Definition
ansi.hpp:31
wren::log
Definition
log.hpp:12
wren::log::get_log_level
static auto get_log_level()
Definition
log.hpp:25
wren::log::trace
void trace(const std::format_string< Args... > &fmt, Args &&... args)
Definition
log.hpp:41
wren::log::error
void error(const std::format_string< Args... > &fmt, Args &&... args)
Definition
log.hpp:73
wren::log::warn
void warn(const std::format_string< Args... > &fmt, Args &&... args)
Definition
log.hpp:65
wren::log::debug
void debug(const std::format_string< Args... > &fmt, Args &&... args)
Definition
log.hpp:49
wren::log::info
void info(const std::format_string< Args... > &fmt, Args &&... args)
Definition
log.hpp:57
wren::log::fatal
void fatal(const std::format_string< Args... > &fmt, Args &&... args)
Definition
log.hpp:81
wren::log::LogLevel
LogLevel
Definition
log.hpp:14
wren::log::LogLevel::Info
@ Info
Definition
log.hpp:17
wren::log::LogLevel::Warn
@ Warn
Definition
log.hpp:18
wren::log::LogLevel::Fatal
@ Fatal
Definition
log.hpp:20
wren::log::LogLevel::Error
@ Error
Definition
log.hpp:19
wren::log::LogLevel::Debug
@ Debug
Definition
log.hpp:16
wren::log::LogLevel::Trace
@ Trace
Definition
log.hpp:15
wren_utils
include
wren
logging
log.hpp
Generated by
1.17.0