File: IBufferedLogger.cs
Web Access
Project: src\src\libraries\Microsoft.Extensions.Logging.Abstractions\src\Microsoft.Extensions.Logging.Abstractions.csproj (Microsoft.Extensions.Logging.Abstractions)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Collections.Generic;
 
namespace Microsoft.Extensions.Logging.Abstractions
{
    /// <summary>
    /// Represents the ability of a logging provider to support buffered logging.
    /// </summary>
    /// <remarks>
    /// A logging provider implements the <see cref="ILogger" /> interface that gets invoked by the
    /// logging infrastructure whenever it’s time to log a piece of state.
    ///
    /// A logging provider may also optionally implement the <see cref="IBufferedLogger" /> interface.
    /// The logging infrastructure may type-test the <see cref="ILogger" /> object to determine if
    /// it supports the <see cref="IBufferedLogger" /> interface. If it does, that indicates to the
    /// logging infrastructure that the logging provider supports buffering. Whenever log
    /// buffering is enabled, buffered log records may be delivered to the logging provider
    /// in a batch via <see cref="IBufferedLogger.LogRecords" />.
    ///
    /// If a logging provider does not support log buffering, then it will always be given
    /// unbuffered log records. If a logging provider does support log buffering, whether its
    /// <see cref="ILogger" /> or <see cref="IBufferedLogger" /> implementation is used is
    /// determined by the log producer.
    /// </remarks>
    public interface IBufferedLogger
    {
        /// <summary>
        /// Delivers a batch of buffered log records to a logging provider.
        /// </summary>
        /// <param name="records">The buffered log records to log.</param>
        /// <remarks>
        /// Once this function returns, the implementation should no longer access the records
        /// or state referenced by these records since the instances may be reused to represent other logs.
        /// </remarks>
        void LogRecords(IEnumerable<BufferedLogRecord> records);
    }
}