/// <summary>
        /// Richiede la scrittura del messaggio specificato all'interno del file di log.
        /// </summary>
        /// <param name="message">Messaggio di log da aggiungere al file di log.</param>
        /// <exception cref="IOException">
        /// Si è verificato un errore di I/O.
        /// </exception>
        public void Write(LogMessage message)
        {
            if (message != null)
            {
                m_LogBuffer.Add(message);

                if (m_LogBuffer.Count >= m_LogBufferMaxSize)
                {
                    Flush();
                }
            }
        }
        /// <summary>
        /// Trasferisce i dati specificati a tutti gli ILogHangler registrati con questo Logger.
        /// </summary>
        /// <param name="time">l'istante da associare al messaggio di log</param>
        /// <param name="module">il nome del modulo che ha invocato questo metodo</param>
        /// <param name="text">il testo del messaggio di log</param>
        /// <remarks>
        /// I dati specificati non vengono scritti immediatamente sui supporti di memorizzazione persistente
        /// degli ILogHandler registrati con questo Logger: la scrittura potrebbe essere posticipata al fine
        /// di ridurre l'impatto prestazionale dovuto ad eventuali supporti più lenti.
        /// </remarks>
        public void Write(DateTime time, string module, string text)
        {
            LogMessage message = new LogMessage()
            {
                Time = time,
                Module = module,
                Text = text
            };

            lock (m_SyncLock)
            {
                foreach (var handler in m_LogHandlers)
                {
                    if (handler != null)
                    {
                        try { handler.Write(message); }
                        catch (Exception e) { m_LogErrors.Add(e); }
                    }
                }
            }
        }