Sligthly rework validation layer logging to tet file

This commit is contained in:
Sascha Willems 2025-06-16 22:34:21 +02:00
parent 2e6bf58914
commit d34494602c
10 changed files with 47 additions and 26 deletions

View file

@ -14,6 +14,7 @@ namespace vks
namespace debug
{
bool logToFile{ false };
std::string logFileName{ "validation_output.txt" };
PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT;
PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT;
@ -31,25 +32,33 @@ namespace vks
if (messageSeverity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT) {
prefix = "VERBOSE: ";
#if defined(_WIN32)
prefix = "\033[32m" + prefix + "\033[0m";
if (!logToFile) {
prefix = "\033[32m" + prefix + "\033[0m";
}
#endif
}
else if (messageSeverity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT) {
prefix = "INFO: ";
#if defined(_WIN32)
prefix = "\033[36m" + prefix + "\033[0m";
if (!logToFile) {
prefix = "\033[36m" + prefix + "\033[0m";
}
#endif
}
else if (messageSeverity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) {
prefix = "WARNING: ";
#if defined(_WIN32)
prefix = "\033[33m" + prefix + "\033[0m";
if (!logToFile) {
prefix = "\033[33m" + prefix + "\033[0m";
}
#endif
}
else if (messageSeverity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT) {
prefix = "ERROR: ";
#if defined(_WIN32)
prefix = "\033[31m" + prefix + "\033[0m";
if (!logToFile) {
prefix = "\033[31m" + prefix + "\033[0m";
}
#endif
}
@ -76,10 +85,7 @@ namespace vks
std::cout << debugMessage.str() << "\n\n";
}
if (logToFile) {
std::ofstream logfile;
logfile.open("validation.txt", std::ios_base::app);
logfile << debugMessage.str() << std::endl;
logfile.close();
log(debugMessage.str());
}
fflush(stdout);
#endif
@ -99,6 +105,18 @@ namespace vks
debugUtilsMessengerCI.pfnUserCallback = debugUtilsMessageCallback;
}
void log(std::string message)
{
if (logToFile) {
time_t timestamp;
time(&timestamp);
std::ofstream logfile;
logfile.open(logFileName, std::ios_base::app);
logfile << strtok(ctime(&timestamp), "\n") << ": " << message << std::endl;
logfile.close();
}
}
void setupDebugging(VkInstance instance)
{
vkCreateDebugUtilsMessengerEXT = reinterpret_cast<PFN_vkCreateDebugUtilsMessengerEXT>(vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT"));