/// <summary>
        /// Adds the given event source to listening
        /// </summary>
        /// <param name="eventSourceName">Full name of the event source to be listened</param>
        /// <param name="level">Event level</param>
        /// <param name="shortName">Short and friendly name of the event source</param>
        /// <returns>True if the event source is listened successfully, false if otherwise</returns>
        public static bool AddEventSource(string eventSourceName, EventLevel level = EventLevel.Verbose, string shortName = null)
        {
            if (instance == null)
            {
                throw new InvalidOperationException();
            }

            Contract.EndContractBlock();

            var eventSource = EventSource.GetSources().FirstOrDefault(s => s.Name == eventSourceName);

            if (eventSource != null)
            {
                instance.listenedEventSources.Add(eventSource.Name, EventSourceInfo.Parse(eventSource, shortName));
                instance.EnableEvents(eventSource, level);
                Trace($"Event source {eventSourceName} enabled.");

                return(true);
            }
            else
            {
                return(false);
            }
        }