public override void TraceEvent(TraceEventCache eventCache, string source, TraceEventType eventType, int id, string format, params object[] args)
        {
            var eventId  = new EventId(id, source);
            var logLevel = eventType.ToLogLevel();

            using var scope = logger.BeginScope(eventCache);
            logger.Log(logLevel, eventId, format, args);
        }
        public override void TraceEvent(TraceEventCache eventCache, string source, TraceEventType eventType, int id, string message)
        {
            var eventId  = new EventId(id, source);
            var logLevel = eventType.ToLogLevel();

            using var scope = logger.BeginScope(eventCache);
            logger.Log(logLevel, eventId, message);
        }
        public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
        {
            var eventId  = new EventId(id, source);
            var logLevel = eventType.ToLogLevel();

            logger.Log(logLevel, eventId, state: data, exception: null,
                       (state, except) => state?.ToString() ?? string.Empty);
        }
        public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, params object[] data)
        {
            data ??= Array.Empty <object>();

            var eventId  = new EventId(id, source);
            var logLevel = eventType.ToLogLevel();

            using var scope = logger.BeginScope(eventCache);
            logger.Log(logLevel, eventId, state: data, exception: null,
                       (state, except) => string.Join(", ", state));
        }