Skip to content

Commit 1021bc7

Browse files
committed
Replace multiple env vars for controlling API logging
with a single variable. Use getenv_to_map to implement env var parsing. Signed-off-by: Igor Chorazewicz <[email protected]>
1 parent 6050a16 commit 1021bc7

File tree

2 files changed

+50
-18
lines changed

2 files changed

+50
-18
lines changed

source/layers/validation/ze_validation_layer.cpp

Lines changed: 48 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,53 @@ namespace validation_layer
1515
{
1616
context_t& context = context_t::getInstance();
1717

18+
void context_t::initLogger() try {
19+
std::string loggingLevel = "error";
20+
std::string loggingFormat = "ZE ---> %v";
21+
22+
auto map = loader::getenv_to_map("ZE_API_LOGGING");
23+
if (map.empty()) {
24+
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, loggingLevel, 1, loggingFormat);
25+
return;
26+
}
27+
28+
auto it = map.find("level");
29+
if (it != map.end()) {
30+
loggingLevel = it->second.front();
31+
map.erase(it);
32+
}
33+
34+
it = map.find("format");
35+
if (it != map.end()) {
36+
loggingFormat = it->second.front();
37+
map.erase(it);
38+
}
39+
40+
if (map.size() != 1 || map.begin()->first != "output") {
41+
std::cerr << "Error parsing ZE_API_LOGGING: Unknown key(s) found" << std::endl;
42+
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, "error", 0);
43+
return;
44+
}
45+
46+
it = map.find("output");
47+
if (it != map.end() && it->second.front() == "stdout") {
48+
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stdout, loggingLevel, 1, loggingFormat);
49+
} else if (it != map.end() && it->second.front() == "stderr") {
50+
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, loggingLevel, 1, loggingFormat);
51+
} else if (it != map.end()){
52+
// Assume it is a file
53+
val_logger = std::make_shared<loader::Logger>("validation", it->second.front(), loggingLevel, 1, loggingFormat);
54+
} else {
55+
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, loggingLevel, 1, loggingFormat);
56+
}
57+
} catch(const std::invalid_argument &e) {
58+
std::cerr << "Error parsing ZE_API_LOGGING: " << e.what() << std::endl;
59+
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, "error", 0);
60+
} catch (...) {
61+
std::cerr << "Error parsing ZE_API_LOGGING" << std::endl;
62+
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, "error", 0);
63+
}
64+
1865
///////////////////////////////////////////////////////////////////////////////
1966
context_t::context_t()
2067
{
@@ -24,24 +71,7 @@ namespace validation_layer
2471
}
2572
enableThreadingValidation = getenv_tobool( "ZE_ENABLE_THREADING_VALIDATION" );
2673

27-
auto logging = getenv_tobool("ZE_ENABLE_API_LOGGING");
28-
auto loggingLevel = getenv_string("ZE_API_LOGGING_LEVEL");
29-
if (loggingLevel.empty())
30-
loggingLevel = "error";
31-
auto loggingOutput = getenv_string("ZE_API_LOGGING_OUTPUT");
32-
if (loggingOutput.empty())
33-
loggingOutput = "stderr";
34-
auto loggingFormat = getenv_string("ZE_API_LOGGING_FORMAT");
35-
if (loggingFormat.empty())
36-
loggingFormat = "ZE ---> %v";
37-
38-
if (loggingOutput == "stderr") {
39-
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stderr, loggingLevel, logging, loggingFormat);
40-
} else if (loggingOutput == "stdout") {
41-
val_logger = std::make_shared<loader::Logger>("validation", loader::Console::stdout, loggingLevel, logging, loggingFormat);
42-
} else {
43-
val_logger = std::make_shared<loader::Logger>("validation", loggingOutput, loggingLevel, logging, loggingFormat);
44-
}
74+
initLogger();
4575
}
4676

4777
///////////////////////////////////////////////////////////////////////////////

source/layers/validation/ze_validation_layer.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ namespace validation_layer
5656
}
5757
context_t();
5858
~context_t();
59+
60+
void initLogger();
5961
};
6062

6163
extern context_t& context;

0 commit comments

Comments
 (0)