Skip to content

Commit

Permalink
Replace multiple env vars for controlling API logging
Browse files Browse the repository at this point in the history
with a single variable. Use getenv_to_map to implement env
var parsing.

Signed-off-by: Igor Chorazewicz <igor.chorazewicz@intel.com>
  • Loading branch information
igchor committed Feb 4, 2025
1 parent 7db11d8 commit b8464f5
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 18 deletions.
66 changes: 48 additions & 18 deletions source/layers/validation/ze_validation_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,53 @@ namespace validation_layer
{
context_t& context = context_t::getInstance();

void context_t::initLogger() try {
std::string loggingLevel = "error";
std::string loggingFormat = "ZE ---> %v";

auto map = loader::getenv_to_map("ZE_API_LOGGING");
if (map.empty()) {
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, loggingLevel, 1, loggingFormat);
return;
}

auto it = map.find("level");
if (it != map.end()) {
loggingLevel = it->second.front();
map.erase(it);
}

it = map.find("format");
if (it != map.end()) {
loggingFormat = it->second.front();
map.erase(it);
}

if (map.size() != 1 || map.begin()->first != "output") {
std::cerr << "Error parsing ZE_API_LOGGING: Unknown key(s) found" << std::endl;
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, "error", 0);
return;
}

it = map.find("output");
if (it != map.end() && it->second.front() == "stdout") {
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stdout, loggingLevel, 1, loggingFormat);
} else if (it != map.end() && it->second.front() == "stderr") {
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, loggingLevel, 1, loggingFormat);
} else if (it != map.end()){
// Assume it is a file
val_logger = std::make_shared<loader::Logger>("validation", it->second.front(), loggingLevel, 1, loggingFormat);
} else {
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, loggingLevel, 1, loggingFormat);
}
} catch(const std::invalid_argument &e) {
std::cerr << "Error parsing ZE_API_LOGGING: " << e.what() << std::endl;
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, "error", 0);
} catch (...) {
std::cerr << "Error parsing ZE_API_LOGGING" << std::endl;
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, "error", 0);
}

///////////////////////////////////////////////////////////////////////////////
context_t::context_t()
{
Expand All @@ -24,24 +71,7 @@ namespace validation_layer
}
enableThreadingValidation = getenv_tobool( "ZE_ENABLE_THREADING_VALIDATION" );

auto logging = getenv_tobool("ZE_ENABLE_API_LOGGING");
auto loggingLevel = getenv_string("ZE_API_LOGGING_LEVEL");
if (loggingLevel.empty())
loggingLevel = "error";
auto loggingOutput = getenv_string("ZE_API_LOGGING_OUTPUT");
if (loggingOutput.empty())
loggingOutput = "stderr";
auto loggingFormat = getenv_string("ZE_API_LOGGING_FORMAT");
if (loggingFormat.empty())
loggingFormat = "ZE ---> %v";

if (loggingOutput == "stderr") {
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, loggingLevel, logging, loggingFormat);
} else if (loggingOutput == "stdout") {
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stdout, loggingLevel, logging, loggingFormat);
} else {
val_logger = std::make_shared<loader::Logger>("validation", loggingOutput, loggingLevel, logging, loggingFormat);
}
initLogger();
}

///////////////////////////////////////////////////////////////////////////////
Expand Down
2 changes: 2 additions & 0 deletions source/layers/validation/ze_validation_layer.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ namespace validation_layer
}
context_t();
~context_t();

void initLogger();
};

extern context_t& context;
Expand Down

0 comments on commit b8464f5

Please sign in to comment.