Simplification of logging and console stuff

This commit is contained in:
2025-07-02 13:45:26 -04:00
parent c2539b4d27
commit 97a9d37417
2 changed files with 56 additions and 31 deletions

View File

@@ -16,37 +16,40 @@ namespace Mutil::Logging {
/// Output stream, default std::clog. /// Output stream, default std::clog.
std::ostream &os = std::clog; std::ostream &os = std::clog;
/// Lambda formatting function, primarily for storing a format string in a versatile way, users allowed to supply their own. /// Lambda formatting function, primarily for storing a format string in a versatile way, users allowed to supply their own.
std::function<std::string()> λPrefix; //std::function<std::string()> λPrefix;
//std::function<std::string(const std::string_view)> λMessage; std::function<std::string(const std::string_view)> λMessage;
std::function<std::string(const std::string)> λMessage; //std::function<std::string(const std::string)> λMessage;
std::function<std::string()> λSuffix; //std::function<std::string()> λSuffix;
public: public:
/// Default constructor, just simple messages to be written to console /// Default constructor, just simple messages to be written to console
LoggerObj() {}; LoggerObj() {};
/// Construct with specified output stream /// Construct with specified output stream
LoggerObj(std::ostream &os); LoggerObj(std::ostream &os) : os(os) {};
/// Full construction /// Full construction
LoggerObj(std::ostream &os, LoggerObj(std::ostream &os, std::function<std::string(const std::string_view)> λMessage) : os(os), λMessage(λMessage) {};
std::function<std::string()> λprefix,
std::function<std::string(const std::string)> λmessage, /// Full construction
std::function<std::string()> λsuffix //LoggerObj(std::ostream &os,
) : os(os), λPrefix(λprefix), λMessage(λmessage), λSuffix(λsuffix) {}; // std::function<std::string()> λprefix,
// std::function<std::string(const std::string)> λmessage,
// std::function<std::string()> λsuffix
// ) : os(os), λPrefix(λprefix), λMessage(λmessage), λSuffix(λsuffix) {};
public: public:
/// Send a simple log message /// Send a simple log message
//void operator()(const std::string_view message) { //void operator()(const std::string_view message) {
void operator()(const std::string message) { void operator()(const std::string message) {
//std::ostringstream oss; //std::ostringstream oss;
λPrefix && os << λPrefix(); //λPrefix && os << λPrefix();
(λMessage && os << λMessage(message)) || os << message; //(λMessage && os << λMessage(message)) || os << message;
λSuffix && os << λSuffix(); //std::cout << λMessage(message);
//λSuffix && os << λSuffix();
//os << oss.str() << std::endl; //os << oss.str() << std::endl;
λMessage ? os << λMessage(message) : os << message;
os << std::endl; os << std::endl;
} }
/// Send a formatted/complex log message /// Send a formatted/complex log message
@@ -54,12 +57,15 @@ namespace Mutil::Logging {
void operator()(const std::format_string<Args...> fmt, Args&&... args) { void operator()(const std::format_string<Args...> fmt, Args&&... args) {
//std::ostringstream oss; //std::ostringstream oss;
std::string m = std::vformat(fmt.get(), std::make_format_args(args...)); std::string m = std::vformat(fmt.get(), std::make_format_args(args...));
λPrefix && os << λPrefix(); //λPrefix && os << λPrefix();
(λMessage && os << λMessage(m)) || os << m; //(λMessage && os << λMessage(m)) || os << m;
λSuffix && os << λSuffix();
//λSuffix && os << λSuffix();
//os << oss.str() << std::endl; //os << oss.str() << std::endl;
λMessage ? os << λMessage(m) : os << m;
os << std::endl; os << std::endl;
}; };
@@ -74,9 +80,11 @@ namespace Mutil::Logging {
//os << message; //os << message;
//return os; //return os;
λPrefix && os << λPrefix(); //λPrefix && os << λPrefix();
(λMessage && os << λMessage(message)) || os << message; //(λMessage && os << λMessage(message)) || os << message;
λSuffix && os << λSuffix(); λMessage ? os << λMessage(message) : os << message;
//λSuffix && os << λSuffix();
os << std::endl; os << std::endl;
return *this; return *this;

View File

@@ -4,16 +4,25 @@
#include <source_location> #include <source_location>
class Debug : public Mutil::Logging::LoggerObj { class Debug : public Mutil::Logging::LoggerObj {
static std::string λMessage(std::string m) { std::string NormalRen = Mutil::Console::Graphics::Rendition().Compile();
return Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RItalic, 135).Compile() + std::format("[D] {}", m) + Mutil::Console::Graphics::Rendition().Compile(); std::string MessageRen = Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RItalic, 135).Compile();
std::string TraceRen = Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RBold, 241).Compile();
//std::function<std::string(const std::string_view)> λMessage = [this](const std::string_view m) {
// return NormalRen + MessageRen + std::format("[D] {}", m) + NormalRen;
//};
//static std::string λMessage(const std::string m) {
// return Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RItalic, 135).Compile() + std::format("[D] {}", m) + Mutil::Console::Graphics::Rendition().Compile();
//return
//return Mutil::Console::Graphics::String(std::format("[D] {}", m), {Mutil::Console::Graphics::RItalic, 135}).Render(); //return Mutil::Console::Graphics::String(std::format("[D] {}", m), {Mutil::Console::Graphics::RItalic, 135}).Render();
}; //};
public: public:
Debug() : LoggerObj(std::cout, nullptr, λMessage, nullptr) {}; Debug() : LoggerObj(std::cout, [this](const std::string_view m) {return NormalRen + MessageRen + std::format("[D] {}", m) + NormalRen;}) {};
void Trace(const std::source_location &location = std::source_location::current()) {
Mutil::Console::Graphics::Rendition r(Mutil::Console::Graphics::RBold, 241);
this->operator()("{}{} @ {}:{}", r.Compile(), location.function_name(), location.file_name(), location.line()); void Trace(const std::source_location &location = std::source_location::current()) {
this->operator()("{}{} @ {}:{}", TraceRen, location.function_name(), location.file_name(), location.line());
//Mutil::Console::Graphics::Rendition r(Mutil::Console::Graphics::RBold, 241);
//this->operator()("{}{} @ {}:{}", r.Compile(), location.function_name(), location.file_name(), location.line());
//this->operator()(Mutil::Console::Graphics::String( //this->operator()(Mutil::Console::Graphics::String(
// std::format("{} @ {}:{}", location.function_name(), location.file_name(), location.line()), // std::format("{} @ {}:{}", location.function_name(), location.file_name(), location.line()),
// {Mutil::Console::Graphics::RBold, 241}).Render()); // {Mutil::Console::Graphics::RBold, 241}).Render());
@@ -24,14 +33,22 @@ int main() {
std::function<std::string()> λprefix = [] { std::function<std::string()> λprefix = [] {
return Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RItalic, 252, 186, 3).Compile() + "--> " + Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RNormal).Compile(); return Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RItalic, 252, 186, 3).Compile() + "--> " + Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RNormal).Compile();
}; };
std::function<std::string(const std::string)> λmessage = [](const std::string m) { std::function<std::string(const std::string_view)> λmessage = [](const std::string_view m) {
return Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RUnderline, 74).Compile() + m + Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RNormal).Compile(); return std::format("{}{} {}{}{}",
Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RItalic, 252, 186, 3).Compile(),
"-->",
Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RUnderline, 74).Compile(),
m,
Mutil::Console::Graphics::Rendition().Compile());
//return Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RItalic, 252, 186, 3).Compile() + "--> " + Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RUnderline, 74).Compile() + m + Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RNormal).Compile()
//return Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RUnderline, 74).Compile() + m + Mutil::Console::Graphics::Rendition(Mutil::Console::Graphics::RNormal).Compile();
}; };
//std::function<std::string()> λsuffix = [] { //std::function<std::string()> λsuffix = [] {
// return " 0"; // return " 0";
//}; //};
Mutil::Logging::LoggerObj l(std::cout, λprefix, λmessage, nullptr); Mutil::Logging::LoggerObj l(std::cout, λmessage);
l("Hello world"); l("Hello world");
l << "something" << "something." << "something.."; l << "something" << "something." << "something..";