Skip to content
Snippets Groups Projects
Commit e0b0f4ee authored by Lioncash's avatar Lioncash
Browse files

lm: Handle threads and modules within the logger

The thread field serves to indicate which thread a log is related to and
provides the length of the thread's name, so we can print that out,
ditto for modules.

Now we can know what threads are potentially spawning off logging
messages (for example Lydie & Suelle bounces between MainThread and
LoadingThread when initializing the game).
parent 301baaa9
No related branches found
No related tags found
No related merge requests found
...@@ -92,7 +92,11 @@ private: ...@@ -92,7 +92,11 @@ private:
// Parse out log metadata // Parse out log metadata
u32 line{}; u32 line{};
std::string message, filename, function; std::string module;
std::string message;
std::string filename;
std::string function;
std::string thread;
while (addr < end_addr) { while (addr < end_addr) {
const Field field{static_cast<Field>(Memory::Read8(addr++))}; const Field field{static_cast<Field>(Memory::Read8(addr++))};
const size_t length{Memory::Read8(addr++)}; const size_t length{Memory::Read8(addr++)};
...@@ -102,6 +106,8 @@ private: ...@@ -102,6 +106,8 @@ private:
} }
switch (field) { switch (field) {
case Field::Skip:
break;
case Field::Message: case Field::Message:
message = Memory::ReadCString(addr, length); message = Memory::ReadCString(addr, length);
break; break;
...@@ -114,6 +120,12 @@ private: ...@@ -114,6 +120,12 @@ private:
case Field::Function: case Field::Function:
function = Memory::ReadCString(addr, length); function = Memory::ReadCString(addr, length);
break; break;
case Field::Module:
module = Memory::ReadCString(addr, length);
break;
case Field::Thread:
thread = Memory::ReadCString(addr, length);
break;
} }
addr += length; addr += length;
...@@ -128,12 +140,18 @@ private: ...@@ -128,12 +140,18 @@ private:
if (!filename.empty()) { if (!filename.empty()) {
log_stream << filename << ':'; log_stream << filename << ':';
} }
if (!module.empty()) {
log_stream << module << ':';
}
if (!function.empty()) { if (!function.empty()) {
log_stream << function << ':'; log_stream << function << ':';
} }
if (line) { if (line) {
log_stream << std::to_string(line) << ':'; log_stream << std::to_string(line) << ':';
} }
if (!thread.empty()) {
log_stream << thread << ':';
}
if (log_stream.str().length() > 0 && log_stream.str().back() == ':') { if (log_stream.str().length() > 0 && log_stream.str().back() == ':') {
log_stream << ' '; log_stream << ' ';
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment