Using Color4 for logger color codes now. It's 2024 if your terminal doesn't support 16 million colors your terminal sucks

This commit is contained in:
2024-08-13 14:50:39 -04:00
parent c735e4baa1
commit 633bee1e9f
6 changed files with 25 additions and 18 deletions

View File

@@ -21,7 +21,7 @@ namespace jlog {
std::vector<token> log_format(
const std::string &severity_name,
const std::string &message,
const AnsiColor &severity_cc = AnsiColor::FG_WHITE);
const Color4 &severity_cc = Colors::White);
/// Returns a more detailed formatted sequence of tokens.
/// @param severity_name The severity tag to prefix to the message. Could theoretically also be a context.
@@ -36,7 +36,7 @@ namespace jlog {
const std::string &func,
const std::string &file,
int line,
const AnsiColor &severity_cc = AnsiColor::FG_WHITE);
const Color4 &severity_cc = Colors::White);
/// Returns a token sequence pre-formatted for the info LogTrace level.
/// @param message The message to send out.

View File

@@ -1,6 +1,7 @@
#pragma once
#include <mcolor.h>
#include "Colors.hpp"
#include <source_location>
#include <map>
#include <jlog/token.hpp>
@@ -13,7 +14,7 @@ namespace jlog
///
class Logger {
public:
explicit Logger(const std::string& context, const AnsiColor& color = AnsiColor::FG_DEFAULT);
explicit Logger(const std::string& context, const Color4& color = Colors::LightGray);
public:
Event<std::vector<token>> OnLogEvent;
public:
@@ -31,8 +32,10 @@ namespace jlog
void LogFile(const std::string& f);
std::string LogFile();
// no cc no bullshit
void SetColorCode(AnsiColor cc = AnsiColor::FG_DEFAULT);
AnsiColor GetColorCode();
//void SetColorCode(AnsiColor cc = AnsiColor::FG_DEFAULT);
//AnsiColor GetColorCode();
void SetColorCode(Color4 cc = Colors::LightGray);
Color4 GetColorCode();
public:
std::string Context();
void SetTraceback(bool enabled);
@@ -40,7 +43,8 @@ namespace jlog
protected:
bool enabled = true;
std::string logfile = "latest.log";
AnsiColor colorcode = AnsiColor::FG_DEFAULT;
//AnsiColor colorcode = AnsiColor::FG_DEFAULT;
Color4 colorcode = Colors::LightGray;
std::string context;
bool trace = true;
};

View File

@@ -2,6 +2,7 @@
#include <functional>
#include <mcolor.h>
#include "Colors.hpp"
namespace jlog {
@@ -10,7 +11,7 @@ namespace jlog {
/// A single piece of a logging message, with color code, content, and delimiter
/// These are strung together to build full logger messages in a flexible manner.
struct token {
AnsiColor colorCode = AnsiColor::FG_DEFAULT;
Color4 colorCode = Colors::White;
std::string content = "";
std::string delimiter = "[]";
};

View File

@@ -36,7 +36,7 @@ namespace jlog {
std::vector<token> log_format(
const std::string& severity_name,
const std::string& message,
const AnsiColor& severity_cc)
const Color4& severity_cc)
{
auto severity = token{.colorCode = severity_cc, .content = severity_name};
auto content = token{.content = message, .delimiter = ""};
@@ -49,7 +49,7 @@ namespace jlog {
const std::string& func,
const std::string& file,
int line,
const AnsiColor& severity_cc)
const Color4& severity_cc)
{
std::vector<token> tokens;
auto timestamp = token{.content = jlog::get_timestamp()};

View File

@@ -12,12 +12,12 @@
namespace jlog
{
Logger info {"info", AnsiColor::FG_GREEN};
Logger warning {"warning", AnsiColor::FG_YELLOW};
Logger error {"error", AnsiColor::FG_RED};
Logger fatal {"fatal", AnsiColor::FG_BRIGHT_RED};
Logger verbose {"verbose", AnsiColor::FG_CYAN};
Logger debug {"debug", AnsiColor::FG_MAGENTA};
Logger info {"info", Colors::Primary::Green};
Logger warning {"warning", Colors::Primary::Yellow};
Logger error {"error", Colors::Primary::Red};
Logger fatal {"fatal", Colors::Reds::Crimson};
Logger verbose {"verbose", Colors::Primary::Blue};
Logger debug {"debug", Colors::Purples::Purple};
void SetTracebackOnGlobalLoggers(bool enabled) {
info.SetTraceback(enabled);

View File

@@ -6,7 +6,7 @@
namespace jlog
{
Logger::Logger(const std::string& context, const AnsiColor& color) {
Logger::Logger(const std::string& context, const Color4& color) {
this->context = context;
this->colorcode = color;
}
@@ -38,8 +38,10 @@ namespace jlog
}
std::string Logger::LogFile() { return this->logfile; }
void Logger::SetColorCode(AnsiColor cc) { this->colorcode = cc; }
AnsiColor Logger::GetColorCode() { return this->colorcode; }
//void Logger::SetColorCode(AnsiColor cc) { this->colorcode = cc; }
//AnsiColor Logger::GetColorCode() { return this->colorcode; }
void Logger::SetColorCode(Color4 cc) { this->colorcode = cc; }
Color4 Logger::GetColorCode() { return this->colorcode; }
std::string Logger::Context() { return this->context; }