92 lines
3.3 KiB
C++
92 lines
3.3 KiB
C++
// Josh's Logger
|
|
// Minimal, robust, Modern (C++20) Logging Framework
|
|
// Created by Joshua O'Leary @ Redacted Software, June 2024
|
|
// Contact: josh@redacted.cc
|
|
// Contributors: william@redacted.cc maxi@redacted.cc
|
|
// This work is dedicated to the public domain.
|
|
#include <jlog/jlog.hpp>
|
|
#include <jlog/io.hpp>
|
|
#include <mcolor.h>
|
|
|
|
int main()
|
|
{
|
|
using namespace mcolor;
|
|
|
|
jlog::Logger demo{"demo", Colors::Pinks::DeepPink};
|
|
demo.SetTraceback(false);
|
|
demo(std::format("{}\n>\t{}\n>\t{}",
|
|
"Custom loggers such as this one can be easily created",
|
|
"jlog::Logger demo{\"demo\", Colors::Pinks::DeepPink};", "demo.SetTraceback(false);"));
|
|
// "Custom loggers such as this one can be easily created."));
|
|
|
|
|
|
// Traceback is enabled on global Loggers by default
|
|
demo("Traceback is enabled on global Loggers by default");
|
|
jlog::info("info message traceback");
|
|
jlog::debug("debug message traceback");
|
|
jlog::verbose("verbose message traceback");
|
|
jlog::warning("warning message traceback");
|
|
jlog::error("error message traceback");
|
|
jlog::fatal("fatal message traceback");
|
|
|
|
// We can disable/enable traceback on a logger
|
|
demo("We can disable/enable traceback on a logger");
|
|
demo("Disable = demo.SetTraceback(false);");
|
|
demo.SetTraceback(true);
|
|
demo("Enable = demo.SetTraceback(true);");
|
|
demo.SetTraceback(false);
|
|
|
|
|
|
// We can set the traceback for all the global loggers.
|
|
demo(std::format("{}\n>\t{}", "We can set the traceback for all the global loggers.", "jlog::SetTracebackOnGlobalLoggers(false);"));
|
|
jlog::SetTracebackOnGlobalLoggers(false);
|
|
|
|
|
|
jlog::info("info message");
|
|
jlog::debug("debug message");
|
|
jlog::verbose("verbose message");
|
|
jlog::warning("warning message");
|
|
jlog::error("error message");
|
|
jlog::fatal("fatal message");
|
|
|
|
// We can enable/disable loggers.
|
|
demo(std::format("{}\n>\t{}\n>\t{}", "We can enable/disable loggers.", "jlog::info.Enable();", "jlog::info.Disable();"));
|
|
jlog::info.Enable();
|
|
jlog::info("Logger enabled");
|
|
jlog::info.Disable();
|
|
demo("You won't see the 'Logger disabled' message here since we just disabled it. Check main.cpp for proof.");
|
|
jlog::info("Logger disabled");
|
|
jlog::info.Enable();
|
|
|
|
// We can also add event hooks to a logger.
|
|
demo(std::format("{}\n>\t{}\n>\t\t{}\n>\n>\t\t{}\n>\t{}",
|
|
"We can also add event hooks to a logger.",
|
|
"demo.OnLogEvent += [](std::vector<jlog::token> t) {",
|
|
"jlog::token dbg = {.colorCode = jlog::debug.GetColorCode(), .content = \"This message is only seen when the event hook is added.\"};",
|
|
"jlog::log_to_console(jlog::toks2consoleMsg(std::vector<jlog::token>{dbg}));",
|
|
"}"
|
|
));
|
|
|
|
|
|
demo("Before event hook");
|
|
|
|
// Create and add event hook.
|
|
demo.OnLogEvent += [](std::vector<jlog::token> t) {
|
|
jlog::token dbg = {.colorCode = jlog::debug.GetColorCode(), .content = "This message is only seen when the event hook is added."};
|
|
|
|
jlog::log_to_console(jlog::toks2consoleMsg(std::vector<jlog::token>{dbg}));
|
|
};
|
|
|
|
demo("After event hook");
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Windows :(
|
|
#ifdef _WIN32
|
|
extern "C" {
|
|
int wmain(int argc, wchar_t* argv[]) {
|
|
return main();
|
|
}
|
|
}
|
|
#endif |