Files

34 lines
783 B
C++

#pragma once
// Timestamped console log lines for the dedicated server.
#include <cstdarg>
#include <cstdio>
#include <ctime>
namespace bs {
// MinGW builds define __USE_MINGW_ANSI_STDIO (see CMakeLists.txt) so %zu works on old msvcrt.
#if defined(__MINGW32__)
__attribute__((format(gnu_printf, 1, 2)))
#elif defined(__GNUC__)
__attribute__((format(printf, 1, 2)))
#endif
inline void logf(const char* fmt, ...) {
std::time_t t = std::time(nullptr);
std::tm tm{};
#if defined(_WIN32)
localtime_s(&tm, &t);
#else
localtime_r(&t, &tm);
#endif
std::printf("[%02d:%02d:%02d] ", tm.tm_hour, tm.tm_min, tm.tm_sec);
va_list ap;
va_start(ap, fmt);
std::vprintf(fmt, ap);
va_end(ap);
std::printf("\n");
std::fflush(stdout);
}
} // namespace bs