cppfig 0.1.0
Modern C++20 compile-time type-safe configuration library
Loading...
Searching...
No Matches
logging.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <cstdio>
5#include <string_view>
6
7namespace cppfig {
8
10enum class LogLevel : std::uint8_t { Info,
11 Warning,
12 Error };
13
15class Logger {
16public:
18 static void Info(std::string_view message) { std::fprintf(stdout, "[cppfig] INFO: %.*s\n", static_cast<int>(message.size()), message.data()); }
19
21 static void Warn(std::string_view message)
22 {
23 std::fprintf(stderr, "[cppfig] WARN: %.*s\n", static_cast<int>(message.size()), message.data());
24 }
25
27 static void Error(std::string_view message)
28 {
29 std::fprintf(stderr, "[cppfig] ERROR: %.*s\n", static_cast<int>(message.size()), message.data());
30 }
31
33 static void Log(LogLevel level, std::string_view message)
34 {
35 switch (level) {
36 case LogLevel::Info:
37 Info(message);
38 break;
40 Warn(message);
41 break;
42 case LogLevel::Error:
43 Error(message);
44 break;
45 }
46 }
47
49 template <typename... Args>
50 static void InfoF(const char* format, Args... args)
51 {
52 std::fprintf(stdout, "[cppfig] INFO: ");
53#pragma GCC diagnostic push
54#pragma GCC diagnostic ignored "-Wformat-nonliteral"
55 std::fprintf(stdout, format, args...);
56#pragma GCC diagnostic pop
57 std::fprintf(stdout, "\n");
58 }
59
61 template <typename... Args>
62 static void WarnF(const char* format, Args... args)
63 {
64 std::fprintf(stderr, "[cppfig] WARN: ");
65#pragma GCC diagnostic push
66#pragma GCC diagnostic ignored "-Wformat-nonliteral"
67 std::fprintf(stderr, format, args...);
68#pragma GCC diagnostic pop
69 std::fprintf(stderr, "\n");
70 }
71
73 template <typename... Args>
74 static void ErrorF(const char* format, Args... args)
75 {
76 std::fprintf(stderr, "[cppfig] ERROR: ");
77#pragma GCC diagnostic push
78#pragma GCC diagnostic ignored "-Wformat-nonliteral"
79 std::fprintf(stderr, format, args...);
80#pragma GCC diagnostic pop
81 std::fprintf(stderr, "\n");
82 }
83};
84
85} // namespace cppfig
Simple logger that writes to stdout/stderr.
Definition logging.h:15
static void WarnF(const char *format, Args... args)
Logs a formatted warning message to stderr.
Definition logging.h:62
static void Log(LogLevel level, std::string_view message)
Logs a message at the specified level.
Definition logging.h:33
static void Error(std::string_view message)
Logs an error message to stderr.
Definition logging.h:27
static void ErrorF(const char *format, Args... args)
Logs a formatted error message to stderr.
Definition logging.h:74
static void InfoF(const char *format, Args... args)
Logs a formatted info message to stdout.
Definition logging.h:50
static void Info(std::string_view message)
Logs an info message to stdout.
Definition logging.h:18
static void Warn(std::string_view message)
Logs a warning message to stderr.
Definition logging.h:21
C++20 compile-time type-safe configuration library.
Definition conf.h:13
LogLevel
Log levels for configuration messages.
Definition logging.h:10