Skip to content

Commit 2a217d8

Browse files
committed
Add remaining log levels
1 parent 5084583 commit 2a217d8

File tree

4 files changed

+45
-2
lines changed

4 files changed

+45
-2
lines changed

include/cpptrace/utils.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ CPPTRACE_BEGIN_NAMESPACE
3737
CPPTRACE_EXPORT void set_log_level(log_level level);
3838
CPPTRACE_EXPORT void set_log_callback(std::function<void(log_level, const char*)>);
3939
CPPTRACE_EXPORT void use_default_stderr_logger();
40+
CPPTRACE_EXPORT const char* to_string(log_level level);
4041

4142
enum class cache_mode {
4243
// Only minimal lookup tables

src/cpptrace.cppm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ CPPTRACE_BEGIN_NAMESPACE
9292
export using cpptrace::set_log_level;
9393
export using cpptrace::set_log_callback;
9494
export using cpptrace::use_default_stderr_logger;
95+
export using cpptrace::to_string;
9596
export using cpptrace::cache_mode;
9697

9798
namespace experimental {

src/logging.cpp

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "logging.hpp"
22

33
#include <cpptrace/forward.hpp>
4+
#include <cpptrace/utils.hpp>
45

56
#include <atomic>
67

@@ -10,8 +11,8 @@ namespace internal {
1011

1112
void default_null_logger(log_level, const char*) {}
1213

13-
void default_stderr_logger(log_level, const char* message) {
14-
std::cerr<<"cpptrace: "<<message<<std::endl;
14+
void default_stderr_logger(log_level level, const char* message) {
15+
microfmt::print(std::cerr, "cpptrace {}: {}\n", to_string(level), message);
1516
}
1617

1718
std::function<void(log_level, const char*)>& log_callback() {
@@ -30,6 +31,18 @@ namespace internal {
3031
void error(const char* message) {
3132
do_log(log_level::error, message);
3233
}
34+
35+
void warn(const char* message) {
36+
do_log(log_level::error, message);
37+
}
38+
39+
void info(const char* message) {
40+
do_log(log_level::error, message);
41+
}
42+
43+
void debug(const char* message) {
44+
do_log(log_level::error, message);
45+
}
3346
}
3447
}
3548
}
@@ -46,4 +59,14 @@ CPPTRACE_BEGIN_NAMESPACE
4659
void use_default_stderr_logger() {
4760
internal::log_callback() = internal::default_stderr_logger;
4861
}
62+
63+
const char* to_string(log_level level) {
64+
switch(level) {
65+
case log_level::debug: return "debug";
66+
case log_level::info: return "info";
67+
case log_level::warning: return "warning";
68+
case log_level::error: return "error";
69+
default: return "unknown log level";
70+
}
71+
}
4972
CPPTRACE_END_NAMESPACE

src/logging.hpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,24 @@ namespace log {
1414
void error(const char* format, Args&&... args) {
1515
error(microfmt::format(format, args...).c_str());
1616
}
17+
18+
void warn(const char*);
19+
template<typename... Args>
20+
void warn(const char* format, Args&&... args) {
21+
warn(microfmt::format(format, args...).c_str());
22+
}
23+
24+
void info(const char*);
25+
template<typename... Args>
26+
void info(const char* format, Args&&... args) {
27+
info(microfmt::format(format, args...).c_str());
28+
}
29+
30+
void debug(const char*);
31+
template<typename... Args>
32+
void debug(const char* format, Args&&... args) {
33+
debug(microfmt::format(format, args...).c_str());
34+
}
1735
}
1836
}
1937
}

0 commit comments

Comments
 (0)