34 lines
783 B
C++
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
|