/// <summary>
        /// Initialises an instance of the <see cref="LogContainer"/> class.
        /// </summary>
        /// <param name="items">
        /// The items to populate the container with.
        /// </param>
        public LogContainer(LogEntry[] items) : this()
        {
            items.ShouldNotBeNull();

            foreach (var item in items)
            {
                m_Count = AddLogEntry(item);
            }
        }
        /// <summary>
        /// See <see cref="ILogProvider.Log"/> for more details.
        /// </summary>
        /// <param name="entry">
        /// The logging entry to add.
        /// </param>
        public void Log(LogEntry entry)
        {
            entry.ShouldNotBeNull();

            entry.SetLoggerName(m_LoggerName);
            if (IsLoggingEnabled)
            {
                m_LogContainer.AddLogEntry(entry);
            }
        }
        /// <summary>
        /// Adds a new logging entry to the proxy service.
        /// </summary>
        /// <remarks>
        /// Will add a new log entry in a thread safe manner.
        /// </remarks>
        /// <param name="logEntry">
        /// The log entry to add.
        /// </param>
        public void AddLogEntry(LogEntry logEntry)
        {
            logEntry.ShouldNotBeNull();

            var count = m_LogEntries.AddLogEntry(logEntry);
            if (count >= m_BatchSize)
            {
                SignalWorkToBeDone();
            }
        }