@@ -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 // /////////////////////////////////////////////////////////////////////////////
0 commit comments