mirror of
https://github.com/geode-sdk/geode.git
synced 2025-03-23 03:15:58 -04:00
add logger nesting
This commit is contained in:
parent
82e128bb57
commit
7d74f16c01
2 changed files with 35 additions and 2 deletions
|
@ -154,6 +154,7 @@ namespace geode {
|
||||||
bool operator==(Log const& l);
|
bool operator==(Log const& l);
|
||||||
|
|
||||||
std::string toString(bool logTime = true) const;
|
std::string toString(bool logTime = true) const;
|
||||||
|
std::string toString(bool logTime, uint32_t nestLevel) const;
|
||||||
|
|
||||||
std::vector<ComponentTrait*>& getComponents();
|
std::vector<ComponentTrait*>& getComponents();
|
||||||
log_clock::time_point getTime() const;
|
log_clock::time_point getTime() const;
|
||||||
|
@ -170,6 +171,7 @@ namespace geode {
|
||||||
private:
|
private:
|
||||||
static std::vector<Log>& logs();
|
static std::vector<Log>& logs();
|
||||||
static std::ofstream& logStream();
|
static std::ofstream& logStream();
|
||||||
|
static uint32_t& nestLevel();
|
||||||
|
|
||||||
Logger() = delete;
|
Logger() = delete;
|
||||||
~Logger() = delete;
|
~Logger() = delete;
|
||||||
|
@ -179,9 +181,11 @@ namespace geode {
|
||||||
static void setup();
|
static void setup();
|
||||||
|
|
||||||
static void push(Log&& log);
|
static void push(Log&& log);
|
||||||
|
|
||||||
static void pop(Log* log);
|
static void pop(Log* log);
|
||||||
|
|
||||||
|
static void pushNest();
|
||||||
|
static void popNest();
|
||||||
|
|
||||||
static std::vector<Log*> list();
|
static std::vector<Log*> list();
|
||||||
static void clear();
|
static void clear();
|
||||||
};
|
};
|
||||||
|
@ -223,5 +227,12 @@ namespace geode {
|
||||||
void error(Args... args) {
|
void error(Args... args) {
|
||||||
internalLog(Severity::Error, getMod(), args...);
|
internalLog(Severity::Error, getMod(), args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void pushNest() {
|
||||||
|
Logger::pushNest();
|
||||||
|
}
|
||||||
|
static void popNest() {
|
||||||
|
Logger::popNest();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,6 +104,9 @@ bool Log::operator==(Log const& l) {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Log::toString(bool logTime) const {
|
std::string Log::toString(bool logTime) const {
|
||||||
|
return toString(logTime, 0);
|
||||||
|
}
|
||||||
|
std::string Log::toString(bool logTime, uint32_t nestLevel) const {
|
||||||
std::string res;
|
std::string res;
|
||||||
|
|
||||||
if (logTime) {
|
if (logTime) {
|
||||||
|
@ -112,6 +115,10 @@ std::string Log::toString(bool logTime) const {
|
||||||
|
|
||||||
res += fmt::format(" [{}]: ", m_sender ? m_sender->getName() : "Geode?");
|
res += fmt::format(" [{}]: ", m_sender ? m_sender->getName() : "Geode?");
|
||||||
|
|
||||||
|
for (uint32_t i = 0; i < nestLevel; i++) {
|
||||||
|
res += " ";
|
||||||
|
}
|
||||||
|
|
||||||
for (auto& i : m_components) {
|
for (auto& i : m_components) {
|
||||||
res += i->_toString();
|
res += i->_toString();
|
||||||
}
|
}
|
||||||
|
@ -205,13 +212,17 @@ std::ofstream& Logger::logStream() {
|
||||||
static std::ofstream logStream;
|
static std::ofstream logStream;
|
||||||
return logStream;
|
return logStream;
|
||||||
}
|
}
|
||||||
|
uint32_t& Logger::nestLevel() {
|
||||||
|
static std::uint32_t nestLevel = 0;
|
||||||
|
return nestLevel;
|
||||||
|
}
|
||||||
|
|
||||||
void Logger::setup() {
|
void Logger::setup() {
|
||||||
logStream() = std::ofstream(dirs::getGeodeLogDir() / log::generateLogName());
|
logStream() = std::ofstream(dirs::getGeodeLogDir() / log::generateLogName());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logger::push(Log&& log) {
|
void Logger::push(Log&& log) {
|
||||||
std::string logStr = log.toString(true);
|
std::string logStr = log.toString(true, nestLevel());
|
||||||
|
|
||||||
LoaderImpl::get()->logConsoleMessageWithSeverity(logStr, log.getSeverity());
|
LoaderImpl::get()->logConsoleMessageWithSeverity(logStr, log.getSeverity());
|
||||||
logStream() << logStr << std::endl;
|
logStream() << logStr << std::endl;
|
||||||
|
@ -223,6 +234,17 @@ void Logger::pop(Log* log) {
|
||||||
geode::utils::ranges::remove(Logger::logs(), *log);
|
geode::utils::ranges::remove(Logger::logs(), *log);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Logger::pushNest() {
|
||||||
|
if (nestLevel() == std::numeric_limits<uint32_t>::max())
|
||||||
|
return;
|
||||||
|
nestLevel()++;
|
||||||
|
}
|
||||||
|
void Logger::popNest() {
|
||||||
|
if (nestLevel() == 0)
|
||||||
|
return;
|
||||||
|
nestLevel()--;
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<Log*> Logger::list() {
|
std::vector<Log*> Logger::list() {
|
||||||
std::vector<Log*> logs_;
|
std::vector<Log*> logs_;
|
||||||
logs_.reserve(logs().size());
|
logs_.reserve(logs().size());
|
||||||
|
|
Loading…
Reference in a new issue