diff --git a/include/LogVisor/LogVisor.hpp b/include/LogVisor/LogVisor.hpp index 68d5694..e63855b 100644 --- a/include/LogVisor/LogVisor.hpp +++ b/include/LogVisor/LogVisor.hpp @@ -146,7 +146,12 @@ public: inline void report(Level severity, const CharType* format, va_list ap) { for (auto& logger : MainLoggers) - logger->report(m_modName, severity, format, ap); + { + va_list apc; + va_copy(apc, ap); + logger->report(m_modName, severity, format, apc); + va_end(apc); + } if (severity == Error || severity == FatalError) LogVisorBp(); if (severity == FatalError) @@ -175,7 +180,13 @@ public: inline void reportSource(Level severity, const char* file, unsigned linenum, const CharType* format, va_list ap) { for (auto& logger : MainLoggers) - logger->reportSource(m_modName, severity, file, linenum, format, ap); + { + va_list apc; + va_copy(apc, ap); + logger->reportSource(m_modName, severity, file, linenum, format, apc); + va_end(apc); + } + if (severity == FatalError) abort(); else if (severity == Error) diff --git a/lib/LogVisor.cpp b/lib/LogVisor.cpp index 2d9eb5b..3c28212 100644 --- a/lib/LogVisor.cpp +++ b/lib/LogVisor.cpp @@ -332,6 +332,10 @@ struct FileLogger : public ILogger thrName = ThreadMap[thrId]; fprintf(fp, "["); + fprintf(fp, "%5.4f ", tmd); + uint_fast64_t fIdx = FrameIndex.load(); + if (fIdx) + fprintf(fp, "(%" PRIu64 ") ", fIdx); switch (severity) { case Info: @@ -351,13 +355,9 @@ struct FileLogger : public ILogger }; fprintf(fp, " %s", modName); if (sourceInfo) - fprintf(stderr, " {%s}", sourceInfo); + fprintf(fp, " {%s}", sourceInfo); if (thrName) fprintf(fp, " (%s)", thrName); - fprintf(fp, " %5.4f", tmd); - uint_fast64_t fIdx = FrameIndex.load(); - if (fIdx) - fprintf(fp, " (%" PRIu64 ")", fIdx); fprintf(fp, "] "); }