Compare commits
4 Commits
Prerelease
...
Prerelease
Author | SHA1 | Date | |
---|---|---|---|
c5d3f7dc82 | |||
aaa7318672 | |||
95f2c761c7 | |||
|
16d1eaa1ee |
@@ -19,7 +19,7 @@ Include this repository as a CPM dependency, and link against the library.
|
||||
```cmake
|
||||
CPMAddPackage(
|
||||
NAME jlog
|
||||
URL https://git.redacted.cc/josh/jlog/archive/Prerelease-2.zip
|
||||
URL https://git.redacted.cc/josh/jlog/archive/Prerelease-7.zip
|
||||
)
|
||||
# ...
|
||||
include_directories(${jlog_SOURCE_DIR}/include)
|
||||
@@ -58,12 +58,10 @@ int main() {
|
||||
|
||||
* Custom Contexts: Allow users to specify custom logging contexts for better organization.
|
||||
* Disable & sort by context (other categories?)
|
||||
* Custom Formats: Add support for custom log message formats.
|
||||
* Documentation
|
||||
* Thread Safety
|
||||
* Memory Safety
|
||||
* Stream Support
|
||||
* Identify File, Line, Function name via macros (I hate macros!!!)
|
||||
|
||||
## License
|
||||
|
||||
|
@@ -25,17 +25,6 @@
|
||||
|
||||
namespace jlog
|
||||
{
|
||||
/*enum class severity : uint8_t
|
||||
{
|
||||
none,
|
||||
verbose,
|
||||
debug,
|
||||
warning,
|
||||
error,
|
||||
fatal
|
||||
};
|
||||
*/
|
||||
|
||||
enum class severity : uint8_t
|
||||
{
|
||||
none,
|
||||
@@ -76,79 +65,85 @@ namespace jlog
|
||||
|
||||
void log(std::vector<token> tokens);
|
||||
|
||||
void info(const std::string& message);
|
||||
void sinfo(const std::string& message);
|
||||
void usinfo(const std::string& message);
|
||||
// Generic formatters for building loggers.
|
||||
std::vector<token> trace_format(
|
||||
const std::string& func,
|
||||
const std::string& file,
|
||||
int line);
|
||||
|
||||
void verbose(const std::string& message);
|
||||
void sverbose(const std::string& message);
|
||||
void usverbose(const std::string& message);
|
||||
std::vector<token> log_format(
|
||||
const std::string& severity_name,
|
||||
const std::string& message,
|
||||
const std::string& severity_colorCode = ansi_escape_codes::FG_WHITE);
|
||||
|
||||
void debug(const std::string& message);
|
||||
void sdebug(const std::string& message);
|
||||
void usdebug(const std::string& message);
|
||||
std::vector<token> log_detailed_format(
|
||||
const std::string& severity_name,
|
||||
const std::string& message,
|
||||
const std::string& func,
|
||||
const std::string& file,
|
||||
int line,
|
||||
const std::string& severity_colorCode = ansi_escape_codes::FG_WHITE);
|
||||
|
||||
void warning(const std::string& message);
|
||||
void swarning(const std::string& message);
|
||||
void uswarning(const std::string& message);
|
||||
// Predefined generic loggers for jlog.
|
||||
std::vector<token> info_format(const std::string& message);
|
||||
|
||||
void error(const std::string& message);
|
||||
void serror(const std::string& message);
|
||||
void userror(const std::string& message);
|
||||
std::vector<token> info_detailed_format(
|
||||
const std::string &message,
|
||||
const std::string &func,
|
||||
const std::string &file,
|
||||
int line);
|
||||
|
||||
void fatal(const std::string& message);
|
||||
void sfatal(const std::string& message);
|
||||
void usfatal(const std::string& message);
|
||||
std::vector<token> warning_format(const std::string& message);
|
||||
|
||||
void info_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
void sinfo_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
void usinfo_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
std::vector<token> warning_detailed_format(
|
||||
const std::string &message,
|
||||
const std::string &func,
|
||||
const std::string &file,
|
||||
int line);
|
||||
|
||||
void verbose_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
void sverbose_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
void usverbose_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
std::vector<token> error_format(const std::string& message);
|
||||
|
||||
void debug_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
void sdebug_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
void usdebug_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
std::vector<token> error_detailed_format(
|
||||
const std::string &message,
|
||||
const std::string &func,
|
||||
const std::string &file,
|
||||
int line);
|
||||
|
||||
void warning_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
void swarning_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
void uswarning_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
std::vector<token> fatal_format(const std::string& message);
|
||||
|
||||
void error_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
void serror_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
void userror_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
std::vector<token> fatal_detailed_format(
|
||||
const std::string &message,
|
||||
const std::string &func,
|
||||
const std::string &file,
|
||||
int line);
|
||||
|
||||
void fatal_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
void sfatal_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
void usfatal_spec(const std::string& message, const std::string& func, const std::string& file, int line);
|
||||
std::vector<token> verbose_format(const std::string& message);
|
||||
|
||||
std::vector<token> verbose_detailed_format(
|
||||
const std::string &message,
|
||||
const std::string &func,
|
||||
const std::string &file,
|
||||
int line);
|
||||
|
||||
std::vector<token> debug_format(const std::string& message);
|
||||
|
||||
std::vector<token> debug_detailed_format(
|
||||
const std::string &message,
|
||||
const std::string &func,
|
||||
const std::string &file,
|
||||
int line);
|
||||
}
|
||||
|
||||
#define INFO(i) if (jlog::loglevel >= jlog::severity::none) { jlog::info_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define SINFO(i) if (jlog::loglevel >= jlog::severity::none) { jlog::sinfo_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define USINFO(i) if (jlog::loglevel >= jlog::severity::none) { jlog::usinfo_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define INFO(i) if (jlog::loglevel >= jlog::severity::none) { jlog::log(jlog::info_detailed_format(i, FUNCTION, __FILE__, __LINE__)); };
|
||||
|
||||
#define VERBOSE(i) if (jlog::loglevel >= jlog::severity::verbose) { jlog::verbose_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define SVERBOSE(i) if (jlog::loglevel >= jlog::severity::verbose) { jlog::sverbose_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define USVERBOSE(i) if (jlog::loglevel >= jlog::severity::verbose) { jlog::usverbose_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define VERBOSE(i) if (jlog::loglevel >= jlog::severity::verbose) { jlog::log(jlog::verbose_detailed_format(i, FUNCTION, __FILE__, __LINE__)); };
|
||||
|
||||
#define DEBUG(i) if (jlog::loglevel >= jlog::severity::debug) { jlog::debug_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define SDEBUG(i) if (jlog::loglevel >= jlog::severity::debug) { jlog::sdebug_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define USDEBUG(i) if (jlog::loglevel >= jlog::severity::debug) { jlog::usdebug_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define DEBUG(i) if (jlog::loglevel >= jlog::severity::debug) { jlog::log(jlog::debug_detailed_format(i, FUNCTION, __FILE__, __LINE__)); };
|
||||
|
||||
#define WARNING(i) if (jlog::loglevel >= jlog::severity::warning) { jlog::warning_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define SWARNING(i) if (jlog::loglevel >= jlog::severity::warning) { jlog::swarning_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define USWARNING(i) if (jlog::loglevel >= jlog::severity::warning) { jlog::uswarning_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define WARNING(i) if (jlog::loglevel >= jlog::severity::warning) { jlog::log(jlog::warning_detailed_format(i, FUNCTION, __FILE__, __LINE__)); };
|
||||
|
||||
#define ERROR(i) if (jlog::loglevel >= jlog::severity::error) { jlog::error_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define SERROR(i) if (jlog::loglevel >= jlog::severity::error) { jlog::serror_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define USERROR(i) if (jlog::loglevel >= jlog::severity::error) { jlog::userror_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define ERROR(i) if (jlog::loglevel >= jlog::severity::error) { jlog::log(jlog::error_detailed_format(i, FUNCTION, __FILE__, __LINE__)); };
|
||||
|
||||
#define FATAL(i) if (jlog::loglevel >= jlog::severity::fatal) { jlog::fatal_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define SFATAL(i) if (jlog::loglevel >= jlog::severity::fatal) { jlog::sfatal_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
#define USFATAL(i) if (jlog::loglevel >= jlog::severity::fatal) { jlog::usfatal_spec(i, FUNCTION, __FILE__, __LINE__); };
|
||||
|
||||
//LINFO
|
||||
#define FATAL(i) if (jlog::loglevel >= jlog::severity::fatal) { jlog::log(jlog::fatal_detailed_format(i, FUNCTION, __FILE__, __LINE__)); };
|
||||
|
||||
#define LOGLEVEL(i) jlog::loglevel = i;
|
29
main.cpp
29
main.cpp
@@ -1,5 +1,18 @@
|
||||
#include <jlog/jlog.hpp>
|
||||
|
||||
// Writing custom wrappers for jlog is super easy!
|
||||
void coollog(std::vector<jlog::token> tokens) {
|
||||
std::vector<jlog::token> wtokens;
|
||||
auto group = jlog::token{.content = "COOLLOGGER"};
|
||||
wtokens.push_back(group);
|
||||
wtokens.insert(wtokens.end(), tokens.begin(), tokens.end());
|
||||
jlog::log(wtokens);
|
||||
}
|
||||
|
||||
// We can either define custom logging macros or redefine jlog's builtin macros.
|
||||
#define COOLINFO(i) coollog(jlog::info_format(i));
|
||||
#define COOLINFOTRACE(i) coollog(jlog::info_detailed_format(i, FUNCTION, __FILE__, __LINE__));
|
||||
|
||||
int main()
|
||||
{
|
||||
LOGLEVEL(jlog::severity::debug); // <- see jlog::severity for full list of log levels
|
||||
@@ -11,22 +24,10 @@ int main()
|
||||
ERROR("Oops, something went wrong.");
|
||||
FATAL("Unrecoverable Error!!!");
|
||||
|
||||
SINFO("This is even less useful information.");
|
||||
SDEBUG("Shorter Debugging Information");
|
||||
SVERBOSE("Yadda Yadda");
|
||||
SWARNING("Minute miscalculation!");
|
||||
SERROR("Oops, something went wrong, but the programmer used the short error logger so you're fucked!");
|
||||
SFATAL("Unrecoverable Error, but the programmer used the short fatal logger so you're even more fucked!!!");
|
||||
|
||||
USINFO("This is EVEN less useful information.");
|
||||
USDEBUG("Ultra compact debugging information.");
|
||||
USVERBOSE("Isn't this an oxymoron?");
|
||||
USWARNING("Captain Qwark grade miscalculation!");
|
||||
USERROR("You're fucked!");
|
||||
USFATAL("You're super fucked!!!");
|
||||
COOLINFO("This is really cool!!!");
|
||||
COOLINFOTRACE("THIS IS EVEN COOLER!!!");
|
||||
|
||||
return 0;
|
||||
///
|
||||
}
|
||||
|
||||
//Windows :(
|
||||
|
@@ -50,314 +50,129 @@ namespace jlog {
|
||||
log_to_file("\n");
|
||||
}
|
||||
|
||||
void direct(const std::string &message) { log({{.content = message, .delimiter=""}});}
|
||||
|
||||
void info(const std::string &message) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_WHITE, .content = "INFO"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = };
|
||||
log({timestamp, severity, content});
|
||||
}
|
||||
|
||||
void sinfo(const std::string &message) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_WHITE, .content = "INFO"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = };
|
||||
log({severity, content});
|
||||
}
|
||||
void usinfo(const std::string &message) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_WHITE, .content = "INFO"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = };
|
||||
log({severity, content});
|
||||
}
|
||||
|
||||
void verbose(const std::string &message) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_CYAN, .content = "VERBOSE"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = };
|
||||
log({timestamp, severity, content});
|
||||
//log(ansi_escape_codes::FG_CYAN, "VERBOSE", message);
|
||||
}
|
||||
|
||||
void sverbose(const std::string &message) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_CYAN, .content = "VERBOSE"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = };
|
||||
log({severity, content});
|
||||
//log(ansi_escape_codes::FG_CYAN, "VERBOSE", message);
|
||||
}
|
||||
|
||||
void usverbose(const std::string &message) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_CYAN, .content = "VERBOSE"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = };
|
||||
log({severity, content});
|
||||
//log(ansi_escape_codes::FG_CYAN, "VERBOSE", message);
|
||||
}
|
||||
|
||||
void debug(const std::string &message) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_GREEN, .content = "DEBUG"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = };
|
||||
log({timestamp, severity, content});
|
||||
|
||||
}
|
||||
|
||||
void sdebug(const std::string &message) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_GREEN, .content = "DEBUG"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = };
|
||||
log({severity, content});
|
||||
}
|
||||
|
||||
void usdebug(const std::string &message) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_GREEN, .content = "DEBUG"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = };
|
||||
log({severity, content});
|
||||
}
|
||||
|
||||
void warning(const std::string &message) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_YELLOW, .content = "WARNING"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = };
|
||||
log({timestamp, severity, content});
|
||||
//log(ansi_escape_codes::FG_YELLOW, "WARNING", message);
|
||||
}
|
||||
|
||||
void uswarning(const std::string &message) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_YELLOW, .content = "WARNING"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = };
|
||||
log({severity, content});
|
||||
//log(ansi_escape_codes::FG_YELLOW, "WARNING", message);
|
||||
}
|
||||
|
||||
void error(const std::string &message) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_RED, .content = "ERROR"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = };
|
||||
log({timestamp, severity, content});
|
||||
//log(ansi_escape_codes::FG_RED, "ERROR", message);
|
||||
}
|
||||
|
||||
void userror(const std::string &message) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_RED, .content = "ERROR"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = };
|
||||
log({severity, content});
|
||||
//log(ansi_escape_codes::FG_RED, "ERROR", message);
|
||||
}
|
||||
|
||||
void fatal(const std::string &message) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_BRIGHT_RED, .content = "FATAL"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
|
||||
log({timestamp, severity, content});
|
||||
}
|
||||
|
||||
void usfatal(const std::string &message) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_BRIGHT_RED, .content = "FATAL"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
|
||||
log({severity, content});
|
||||
}
|
||||
|
||||
void info_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_WHITE, .content = "INFO"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
// Generic formatters for building loggers.
|
||||
std::vector<token> trace_format(
|
||||
const std::string& func,
|
||||
const std::string& file,
|
||||
int line)
|
||||
{
|
||||
auto trace = token{.content = func};
|
||||
auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({timestamp, trace, filedata, severity, content});
|
||||
return {trace, filedata};
|
||||
}
|
||||
|
||||
void sinfo_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_WHITE, .content = "INFO"};
|
||||
std::vector<token> log_format(
|
||||
const std::string& severity_name,
|
||||
const std::string& message,
|
||||
const std::string& severity_colorCode)
|
||||
{
|
||||
auto severity = token{.colorCode = severity_colorCode, .content = severity_name};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
auto trace = token{.content = func};
|
||||
auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({trace, filedata, severity, content});
|
||||
//log({severity, content});
|
||||
return {severity, content};
|
||||
}
|
||||
|
||||
void usinfo_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_WHITE, .content = "INFO"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = func};
|
||||
//auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
//log({trace, filedata, severity, content});
|
||||
log({severity, content});
|
||||
std::vector<token> log_detailed_format(
|
||||
const std::string& severity_name,
|
||||
const std::string& message,
|
||||
const std::string& func,
|
||||
const std::string& file,
|
||||
int line,
|
||||
const std::string& severity_colorCode)
|
||||
{
|
||||
std::vector<token> tokens;
|
||||
auto timestamp = token{.content = jlog::get_timestamp()};
|
||||
auto tf_tokens = trace_format(func, file, line);
|
||||
auto lf_tokens = log_format(severity_name, message, severity_colorCode);
|
||||
tokens.push_back(timestamp);
|
||||
tokens.insert(tokens.end(), tf_tokens.begin(), tf_tokens.end());
|
||||
tokens.insert(tokens.end(), lf_tokens.begin(), lf_tokens.end());
|
||||
return tokens;
|
||||
}
|
||||
|
||||
void verbose_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_CYAN, .content = "VERBOSE"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
auto trace = token{.content = func};
|
||||
auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({timestamp, trace, filedata, severity, content});
|
||||
|
||||
|
||||
// Predefined generic loggers for jlog.
|
||||
std::vector<token> info_format(const std::string& message)
|
||||
{
|
||||
return log_format("INFO", message);
|
||||
}
|
||||
|
||||
void sverbose_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_CYAN, .content = "VERBOSE"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
auto trace = token{.content = func};
|
||||
auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({trace, filedata, severity, content});
|
||||
std::vector<token> info_detailed_format(
|
||||
const std::string &message,
|
||||
const std::string &func,
|
||||
const std::string &file,
|
||||
int line)
|
||||
{
|
||||
return log_detailed_format("INFO", message, func, file, line);
|
||||
}
|
||||
|
||||
void usverbose_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_CYAN, .content = "VERBOSE"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = func};
|
||||
//auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({severity, content});
|
||||
std::vector<token> warning_format(const std::string& message)
|
||||
{
|
||||
return log_format("INFO", message, ansi_escape_codes::FG_YELLOW);
|
||||
}
|
||||
|
||||
void debug_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_GREEN, .content = "DEBUG"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
auto trace = token{.content = func};
|
||||
auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({timestamp, trace, filedata, severity, content});
|
||||
std::vector<token> warning_detailed_format(
|
||||
const std::string &message,
|
||||
const std::string &func,
|
||||
const std::string &file,
|
||||
int line)
|
||||
{
|
||||
return log_detailed_format("WARNING", message, func, file, line, ansi_escape_codes::FG_YELLOW);
|
||||
}
|
||||
|
||||
void sdebug_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_GREEN, .content = "DEBUG"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
auto trace = token{.content = func};
|
||||
auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({trace, filedata, severity, content});
|
||||
std::vector<token> error_format(const std::string& message)
|
||||
{
|
||||
return log_format("ERROR", message, ansi_escape_codes::FG_RED);
|
||||
}
|
||||
|
||||
void usdebug_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_GREEN, .content = "DEBUG"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = func};
|
||||
//auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({severity, content});
|
||||
std::vector<token> error_detailed_format(
|
||||
const std::string &message,
|
||||
const std::string &func,
|
||||
const std::string &file,
|
||||
int line)
|
||||
{
|
||||
return log_detailed_format("ERROR", message, func, file, line, ansi_escape_codes::FG_RED);
|
||||
}
|
||||
|
||||
void warning_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_YELLOW, .content = "WARNING"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
auto trace = token{.content = func};
|
||||
auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({timestamp, trace, filedata, severity, content});
|
||||
std::vector<token> fatal_format(const std::string& message)
|
||||
{
|
||||
return log_format("FATAL", message, ansi_escape_codes::FG_BRIGHT_RED);
|
||||
}
|
||||
|
||||
void swarning_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_YELLOW, .content = "WARNING"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
auto trace = token{.content = func};
|
||||
auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({trace, filedata, severity, content});
|
||||
std::vector<token> fatal_detailed_format(
|
||||
const std::string &message,
|
||||
const std::string &func,
|
||||
const std::string &file,
|
||||
int line)
|
||||
{
|
||||
return log_detailed_format("FATAL", message, func, file, line, ansi_escape_codes::FG_BRIGHT_RED);
|
||||
}
|
||||
|
||||
void uswarning_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_YELLOW, .content = "WARNING"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = func};
|
||||
//auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({severity, content});
|
||||
std::vector<token> verbose_format(const std::string& message)
|
||||
{
|
||||
return log_format("VERBOSE", message, ansi_escape_codes::FG_CYAN);
|
||||
}
|
||||
|
||||
void error_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_RED, .content = "ERROR"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
auto trace = token{.content = func};
|
||||
auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({timestamp, trace, filedata, severity, content});
|
||||
std::vector<token> verbose_detailed_format(
|
||||
const std::string &message,
|
||||
const std::string &func,
|
||||
const std::string &file,
|
||||
int line)
|
||||
{
|
||||
return log_detailed_format("VERBOSE", message, func, file, line, ansi_escape_codes::FG_CYAN);
|
||||
}
|
||||
|
||||
void serror_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_RED, .content = "ERROR"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
auto trace = token{.content = func};
|
||||
auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({trace, filedata, severity, content});
|
||||
std::vector<token> debug_format(const std::string& message)
|
||||
{
|
||||
return log_format("DEBUG", message, ansi_escape_codes::FG_GREEN);
|
||||
}
|
||||
|
||||
void userror_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
//auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_RED, .content = "ERROR"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = func};
|
||||
//auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({severity, content});
|
||||
}
|
||||
|
||||
void fatal_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_BRIGHT_RED, .content = "FATAL"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
auto trace = token{.content = func};
|
||||
auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({timestamp, trace, filedata, severity, content});
|
||||
}
|
||||
|
||||
void sfatal_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_BRIGHT_RED, .content = "FATAL"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
auto trace = token{.content = func};
|
||||
auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({trace, filedata, severity, content});
|
||||
}
|
||||
|
||||
void usfatal_spec(const std::string &message, const std::string &func, const std::string &file,
|
||||
int line) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_BRIGHT_RED, .content = "FATAL"};
|
||||
auto content = token{.content = message, .delimiter = ""};
|
||||
//auto trace = token{.content = func};
|
||||
//auto filedata = token{.content = std::format("{}:{}", file, line)};
|
||||
log({severity, content});
|
||||
std::vector<token> debug_detailed_format(
|
||||
const std::string &message,
|
||||
const std::string &func,
|
||||
const std::string &file,
|
||||
int line)
|
||||
{
|
||||
return log_detailed_format("DEBUG", message, func, file, line, ansi_escape_codes::FG_GREEN);
|
||||
}
|
||||
}
|
||||
|
@@ -55,6 +55,8 @@ namespace jlog {
|
||||
log({{.content = message, .delimiter = ""}});
|
||||
}
|
||||
|
||||
std::vector<token> info_format(const std::string& message
|
||||
|
||||
void info(const std::string& message) {
|
||||
auto timestamp = token{.content = get_timestamp()};
|
||||
auto severity = token{.colorCode = ansi_escape_codes::FG_WHITE, .content = "INFO"};
|
||||
|
Reference in New Issue
Block a user