public void Log <TState>(Microsoft.Extensions.Logging.LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            if (!_isEnabled)
            {
                return;
            }

            var level   = LogLevelHelper.GetLogLevel(logLevel);
            var message = formatter(state, exception);

            Dictionary <string, object> properties = null;

            if (eventId.Id != 0 || !string.IsNullOrEmpty(eventId.Name))
            {
                properties = new Dictionary <string, object>
                {
                    { "EventId", eventId.ToString() }
                };
            }

            var log = Component.Log.GetTaggedCopy(_categoryName);

            log.Write(level, message, exception, properties);
        }