#include "re/log.h" #include #include #include #include namespace re { namespace { std::mutex g_mutex; FILE* g_file = nullptr; } // namespace void OpenLog(const wchar_t* path) { std::lock_guard lock(g_mutex); if (!g_file) { g_file = _wfsopen(path, L"w", _SH_DENYWR); } } void Log(const char* fmt, ...) { char message[1024]; va_list args; va_start(args, fmt); vsnprintf(message, sizeof(message), fmt, args); va_end(args); SYSTEMTIME t; GetLocalTime(&t); char line[1100]; snprintf(line, sizeof(line), "%02d:%02d:%02d.%03d %s\n", t.wHour, t.wMinute, t.wSecond, t.wMilliseconds, message); OutputDebugStringA(line); std::lock_guard lock(g_mutex); if (g_file) { fputs(line, g_file); fflush(g_file); } } } // namespace re