@@ -145,6 +145,8 @@ class Logger : public opentelemetry::logs::Logger
145145 */
146146 std::string provId;
147147
148+ std::string eventName_;
149+
148150 /* *
149151 * @brief Encoding (Manifest, MessagePack or XML)
150152 */
@@ -179,10 +181,12 @@ class Logger : public opentelemetry::logs::Logger
179181 * @param encoding ETW encoding format to use.
180182 */
181183 Logger (etw::LoggerProvider &parent,
184+ nostd::string_view eventName,
182185 nostd::string_view providerId = " " ,
183186 ETWProvider::EventFormat encoding = ETWProvider::EventFormat::ETW_MANIFEST)
184187 : opentelemetry::logs::Logger(),
185188 loggerProvider_ (parent),
189+ eventName_(eventName),
186190 provId(providerId.data(), providerId.size()),
187191 encoding(encoding),
188192 provHandle(initProvHandle())
@@ -271,7 +275,7 @@ class Logger : public opentelemetry::logs::Logger
271275#endif // defined(ENABLE_ENV_PROPERTIES)
272276
273277 // Populate Etw.EventName attribute at envelope level
274- evt[ETW_FIELD_NAME] = ETW_VALUE_LOG ;
278+ evt[ETW_FIELD_NAME] = eventName_. data () ;
275279
276280#ifdef HAVE_FIELD_TIME
277281 {
@@ -347,6 +351,8 @@ class LoggerProvider : public opentelemetry::logs::LoggerProvider
347351 GetOption (options, " enableTraceId" , config_.enableTraceId , true );
348352 GetOption (options, " enableSpanId" , config_.enableSpanId , true );
349353 GetOption (options, " enableActivityId" , config_.enableActivityId , false );
354+ GetOption (options, " enableTableNameMappings" , config_.enableTableNameMappings , false );
355+ GetOption (options, " tableNameMappings" , config_.tableNameMappings , {});
350356
351357 // Determines what encoding to use for ETW events: TraceLogging Dynamic, MsgPack, XML, etc.
352358 config_.encoding = GetEncoding (options);
@@ -359,19 +365,30 @@ class LoggerProvider : public opentelemetry::logs::LoggerProvider
359365
360366 nostd::shared_ptr<opentelemetry::logs::Logger> GetLogger (
361367 opentelemetry::nostd::string_view logger_name,
362- opentelemetry::nostd::string_view library_name,
363- opentelemetry::nostd::string_view version = " " ,
364- opentelemetry::nostd::string_view schema_url = " " ,
368+ opentelemetry::nostd::string_view library_name = " " ,
369+ opentelemetry::nostd::string_view version = " " ,
370+ opentelemetry::nostd::string_view schema_url = " " ,
365371 const opentelemetry::common::KeyValueIterable &attributes =
366372 opentelemetry::common::NoopKeyValueIterable ()) override
367373 {
368- UNREFERENCED_PARAMETER (library_name);
369374 UNREFERENCED_PARAMETER (version);
370375 UNREFERENCED_PARAMETER (schema_url);
371376 UNREFERENCED_PARAMETER (attributes);
377+
378+ std::string event_name{ETW_VALUE_LOG};
379+ if (config_.enableTableNameMappings )
380+ {
381+ auto it =
382+ config_.tableNameMappings .find (std::string (library_name.data (), library_name.size ()));
383+ if (it != config_.tableNameMappings .end ())
384+ {
385+ event_name = it->second ;
386+ }
387+ }
388+
372389 ETWProvider::EventFormat evtFmt = config_.encoding ;
373390 return nostd::shared_ptr<opentelemetry::logs::Logger>{
374- new (std::nothrow) etw::Logger (*this , logger_name, evtFmt)};
391+ new (std::nothrow) etw::Logger (*this , event_name, logger_name, evtFmt)};
375392 }
376393};
377394
0 commit comments