Compare commits
11 Commits
Prerelease
...
main
Author | SHA1 | Date | |
---|---|---|---|
6836cab537 | |||
e618fd9b31 | |||
884f23f79e | |||
cf4e19e340 | |||
12d3714eda | |||
f3cec87518 | |||
7c9a3bddc8 | |||
16a2b8ead0 | |||
82fb6c64ca | |||
b3dbd1b556 | |||
22a4e02b95 |
@@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 3.18..27)
|
cmake_minimum_required(VERSION 3.18..3.27)
|
||||||
PROJECT(jlog
|
PROJECT(jlog
|
||||||
VERSION 1.0
|
VERSION 1.0
|
||||||
LANGUAGES CXX
|
LANGUAGES CXX
|
||||||
@@ -23,12 +23,12 @@ include_directories("include")
|
|||||||
|
|
||||||
CPMAddPackage(
|
CPMAddPackage(
|
||||||
NAME Event
|
NAME Event
|
||||||
URL https://git.redacted.cc/josh/Event/archive/Release-7.zip
|
URL https://git.redacted.cc/josh/Event/archive/Release-12.zip
|
||||||
)
|
)
|
||||||
|
|
||||||
CPMAddPackage(
|
CPMAddPackage(
|
||||||
NAME mcolor
|
NAME mcolor
|
||||||
URL https://git.redacted.cc/maxine/mcolor/archive/Prerelease-4.zip
|
URL https://git.redacted.cc/maxine/mcolor/archive/Release-1.zip
|
||||||
)
|
)
|
||||||
|
|
||||||
if (UNIX)
|
if (UNIX)
|
||||||
|
@@ -1,18 +1,18 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "fstream"
|
#include <fstream>
|
||||||
#include "iostream"
|
#include <iostream>
|
||||||
#include "source_location"
|
#include <source_location>
|
||||||
#include "Token.hpp"
|
#include <jlog/Token.hpp>
|
||||||
#include "Timestamp.hpp"
|
#include <jlog/Timestamp.hpp>
|
||||||
|
#include <Event.h>
|
||||||
|
|
||||||
namespace jlog {
|
namespace jlog {
|
||||||
class Logger {
|
class Logger {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Logger(std::ostream &stream = std::cout) : os{stream} {};
|
Logger(std::ostream &stream = std::cout) : os{stream} {};
|
||||||
public:
|
public:
|
||||||
void
|
void operator()(const std::string &message, const std::source_location &location = std::source_location::current(),
|
||||||
operator()(const std::string &message, const std::source_location &location = std::source_location::current(),
|
|
||||||
const Timestamp &ts = Timestamp()) {
|
const Timestamp &ts = Timestamp()) {
|
||||||
if (Enable)
|
if (Enable)
|
||||||
Log(message, location, ts);
|
Log(message, location, ts);
|
||||||
@@ -47,10 +47,7 @@ namespace jlog {
|
|||||||
const Timestamp &ts = Timestamp()) {
|
const Timestamp &ts = Timestamp()) {
|
||||||
if (!Enable)
|
if (!Enable)
|
||||||
return;
|
return;
|
||||||
// Disable color on Windows. I've been trying my best to keep this macro hidden from the user. - maxine
|
|
||||||
#ifdef WIN32
|
|
||||||
IncludeColor = false;
|
|
||||||
#endif
|
|
||||||
if (IncludeTimestamp) {
|
if (IncludeTimestamp) {
|
||||||
Timestamp ts;
|
Timestamp ts;
|
||||||
os << token{std::format(
|
os << token{std::format(
|
||||||
@@ -127,6 +124,7 @@ namespace jlog {
|
|||||||
|
|
||||||
class CompoundLogger : protected ConsoleLogger, protected FileLogger {
|
class CompoundLogger : protected ConsoleLogger, protected FileLogger {
|
||||||
public:
|
public:
|
||||||
|
Event<std::string, Color4> OnLog;
|
||||||
explicit CompoundLogger(const std::string &context, std::ofstream &file) : ConsoleLogger(context),
|
explicit CompoundLogger(const std::string &context, std::ofstream &file) : ConsoleLogger(context),
|
||||||
FileLogger(context, file) {};
|
FileLogger(context, file) {};
|
||||||
public:
|
public:
|
||||||
@@ -137,6 +135,7 @@ namespace jlog {
|
|||||||
virtual void
|
virtual void
|
||||||
Log(const std::string &message, const std::source_location &location = std::source_location::current(),
|
Log(const std::string &message, const std::source_location &location = std::source_location::current(),
|
||||||
const Timestamp &ts = Timestamp()) {
|
const Timestamp &ts = Timestamp()) {
|
||||||
|
OnLog.Invoke(message, messageColor);
|
||||||
ConsoleLogger::Log(message, location, ts);
|
ConsoleLogger::Log(message, location, ts);
|
||||||
FileLogger::Log(message, location, ts);
|
FileLogger::Log(message, location, ts);
|
||||||
}
|
}
|
||||||
@@ -187,4 +186,38 @@ namespace jlog {
|
|||||||
extern GenericLogger Fatal;
|
extern GenericLogger Fatal;
|
||||||
extern GenericLogger Verbose;
|
extern GenericLogger Verbose;
|
||||||
extern GenericLogger Debug;
|
extern GenericLogger Debug;
|
||||||
|
|
||||||
|
class LibraryLogger {
|
||||||
|
public:
|
||||||
|
LibraryLogger(const std::string libname) :
|
||||||
|
Info {libname + "::" + "info", GlobalLogFile, Colors::Green, Colors::Gray, Colors::Gray, Colors::Green, Colors::White},
|
||||||
|
Warning {libname + "::" + "warning", GlobalLogFile, Colors::Yellow, Colors::Gray, Colors::Gray, Colors::Yellow, Colors::White},
|
||||||
|
Error {libname + "::" + "error", GlobalLogFile, Colors::Red, Colors::Gray, Colors::Gray, Colors::Red, Colors::White},
|
||||||
|
Fatal {libname + "::" + "fatal", GlobalLogFile, Colors::Reds::Crimson, Colors::Gray, Colors::Gray, Colors::Reds::Crimson, Colors::White},
|
||||||
|
Verbose {libname + "::" + "verbose", GlobalLogFile, Colors::Blue, Colors::Gray, Colors::Gray, Colors::Blue, Colors::White},
|
||||||
|
Debug {libname + "::" + "debug", GlobalLogFile, Colors::Purples::Purple, Colors::Gray, Colors::Gray, Colors::Purples::Purple, Colors::White}
|
||||||
|
{}
|
||||||
|
public:
|
||||||
|
GenericLogger Info;// {"info", GlobalLogFile, Colors::Green, Colors::Gray, Colors::Gray, Colors::Green, Colors::White};
|
||||||
|
GenericLogger Warning;// {"warning", GlobalLogFile, Colors::Yellow, Colors::Gray, Colors::Gray, Colors::Yellow, Colors::White};
|
||||||
|
GenericLogger Error;// {"error", GlobalLogFile, Colors::Red, Colors::Gray, Colors::Gray, Colors::Red, Colors::White};
|
||||||
|
GenericLogger Fatal;// {"fatal", GlobalLogFile, Colors::Reds::Crimson, Colors::Gray, Colors::Gray, Colors::Reds::Crimson, Colors::White};
|
||||||
|
GenericLogger Verbose;// {"verbose", GlobalLogFile, Colors::Blue, Colors::Gray, Colors::Gray, Colors::Blue, Colors::White};
|
||||||
|
GenericLogger Debug;// {"debug", GlobalLogFile, Colors::Purples::Purple, Colors::Gray, Colors::Gray, Colors::Purples::Purple, Colors::White};
|
||||||
|
public:
|
||||||
|
void EnableAll(bool b) {
|
||||||
|
Info.EnableConsole(b);
|
||||||
|
Info.EnableFile(b);
|
||||||
|
Warning.EnableConsole(b);
|
||||||
|
Warning.EnableFile(b);
|
||||||
|
Error.EnableConsole(b);
|
||||||
|
Error.EnableFile(b);
|
||||||
|
Fatal.EnableConsole(b);
|
||||||
|
Fatal.EnableFile(b);
|
||||||
|
Verbose.EnableConsole(b);
|
||||||
|
Verbose.EnableFile(b);
|
||||||
|
Debug.EnableConsole(b);
|
||||||
|
Debug.EnableFile(b);
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@@ -7,13 +7,13 @@ namespace jlog {
|
|||||||
public:
|
public:
|
||||||
Timestamp();
|
Timestamp();
|
||||||
public:
|
public:
|
||||||
std::chrono::year Year() {return y;};
|
[[nodiscard]] std::chrono::year Year() const {return y;};
|
||||||
std::chrono::month Month() {return m;};
|
[[nodiscard]] std::chrono::month Month() const {return m;};
|
||||||
std::chrono::day Day() {return d;}
|
[[nodiscard]] std::chrono::day Day() const {return d;}
|
||||||
std::chrono::duration<long, std::ratio<3600>> Hour() {return h;};
|
[[nodiscard]] std::chrono::duration<long, std::ratio<3600>> Hour() const {return h;};
|
||||||
std::chrono::duration<long, std::ratio<60>> Minute() {return M;};
|
[[nodiscard]] std::chrono::duration<long, std::ratio<60>> Minute() const {return M;};
|
||||||
std::chrono::duration<long> Second() {return s;};
|
[[nodiscard]] std::chrono::duration<long> Second() const {return s;};
|
||||||
std::chrono::duration<long, std::ratio<1, 1000>> Millisecond() {return ms;};
|
[[nodiscard]] std::chrono::duration<long, std::ratio<1, 1000>> Millisecond() const {return ms;};
|
||||||
private:
|
private:
|
||||||
std::chrono::year y;
|
std::chrono::year y;
|
||||||
std::chrono::month m;
|
std::chrono::month m;
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <string>
|
||||||
|
#include <ostream>
|
||||||
#include <mcolor.h>
|
#include <mcolor.h>
|
||||||
#include "Colors.hpp"
|
#include <Colors.hpp>
|
||||||
|
|
||||||
namespace jlog {
|
namespace jlog {
|
||||||
using namespace mcolor;
|
using namespace mcolor;
|
||||||
|
18
main.cpp
18
main.cpp
@@ -6,10 +6,9 @@
|
|||||||
// This work is dedicated to the public domain.
|
// This work is dedicated to the public domain.
|
||||||
#include "jlog/Logger.hpp"
|
#include "jlog/Logger.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
mcolor::windowsSaneify();
|
||||||
jlog::GenericLogger Demo("demo", jlog::GlobalLogFile);
|
jlog::GenericLogger Demo("demo", jlog::GlobalLogFile);
|
||||||
Demo("No new demo yet");
|
Demo("No new demo yet");
|
||||||
jlog::Info("dsadsd");
|
jlog::Info("dsadsd");
|
||||||
@@ -18,6 +17,21 @@ int main()
|
|||||||
jlog::Fatal("dsadsd");
|
jlog::Fatal("dsadsd");
|
||||||
jlog::Verbose("dsadsd");
|
jlog::Verbose("dsadsd");
|
||||||
jlog::Debug("dsadsd");
|
jlog::Debug("dsadsd");
|
||||||
|
jlog::LibraryLogger libtest("JLog");
|
||||||
|
libtest.Info("A");
|
||||||
|
libtest.Warning("B");
|
||||||
|
libtest.Debug("C");
|
||||||
|
libtest.Error("D");
|
||||||
|
libtest.Fatal("E");
|
||||||
|
libtest.Verbose("G");
|
||||||
|
libtest.EnableAll(false);
|
||||||
|
libtest.Info("A2");
|
||||||
|
libtest.Warning("B2");
|
||||||
|
libtest.Debug("C2");
|
||||||
|
libtest.Error("D2");
|
||||||
|
libtest.Fatal("E2");
|
||||||
|
libtest.Verbose("G2");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#include "jlog/Token.hpp"
|
#include <jlog/Token.hpp>
|
||||||
|
#include <ostream>
|
||||||
|
|
||||||
namespace jlog {
|
namespace jlog {
|
||||||
std::string token::Stringer(bool includeColor) {
|
std::string token::Stringer(bool includeColor) {
|
||||||
|
Reference in New Issue
Block a user