
Namespace Logging

    ''' <summary>
    ''' An interface for logging nessages.
    ''' </summary>
    ''' <remarks></remarks>
    Public Interface ILog
        ''' <summary>
        ''' Gets the name of this log.
        ''' </summary>
        ''' <returns>The name of this log.</returns>
        ''' <remarks></remarks>
        ReadOnly Property Name() As String

        ''' <summary>
        ''' Initializes this log with the specified log name.
        ''' </summary>
        ''' <param name="logName">The name of this log.</param>
        ''' <remarks></remarks>
        Sub Initialize(ByVal logName As String)

        ''' <summary>
        ''' Writes the specified debug message.
        ''' </summary>
        ''' <param name="message">A function generating the message to write.</param>
        Sub Debug(ByVal message As Func(Of String))

        ''' <summary>
        ''' Writes the specified debug message with the specified event identifier.
        ''' </summary>
        ''' <param name="id">The event identifier for this message.</param>
        ''' <param name="message">A function generating the message to write.</param>
        Sub Debug(ByVal id As Integer, ByVal message As Func(Of String))

        ''' <summary>
        ''' Writes the debug message using the specified argument array and format.
        ''' </summary>
        ''' <param name="format">The composite format string to write.</param>
        ''' <param name="args">The argument array to format.</param>
        Sub Debug(ByVal format As String, ByVal ParamArray args() As Object)

        ''' <summary>
        ''' Writes the debug message using the specified event identifier, argument array, and format.
        ''' </summary>
        ''' <param name="id">The event identifier for this message.</param>
        ''' <param name="format">The composite format string to write.</param>
        ''' <param name="args">The argument array to format.</param>
        Sub Debug(ByVal id As Integer, ByVal format As String, ByVal args() As Object)

        ''' <summary>
        ''' Writes the specified information message.
        ''' </summary>
        ''' <param name="message">A function generating the message to write.</param>
        Sub Info(ByVal message As Func(Of String))

        ''' <summary>
        ''' Writes the specified information message with the specified event identifier.
        ''' </summary>
        ''' <param name="id">The event identifier for this message.</param>
        ''' <param name="message">A function generating the message to write.</param>
        Sub Info(ByVal id As Integer, ByVal message As Func(Of String))

        ''' <summary>
        ''' Writes the information message using the specified argument array and format.
        ''' </summary>
        ''' <param name="format">The composite format string to write.</param>
        ''' <param name="args">The argument array to format.</param>
        Sub Info(ByVal format As String, ByVal ParamArray args() As Object)

        ''' <summary>
        ''' Writes the information message using the specified event identifier, argument array, and format.
        ''' </summary>
        ''' <param name="id">The event identifier for this message.</param>
        ''' <param name="format">The composite format string to write.</param>
        ''' <param name="args">The argument array to format.</param>
        Sub Info(ByVal id As Integer, ByVal format As String, ByVal args() As Object)

        ''' <summary>
        ''' Writes the specified warning message.
        ''' </summary>
        ''' <param name="message">A function generating the message to write.</param>
        Sub Warn(ByVal message As Func(Of String))

        ''' <summary>
        ''' Writes the specified warning message with the specified event identifier.
        ''' </summary>
        ''' <param name="id">The event identifier for this message.</param>
        ''' <param name="message">A function generating the message to write.</param>
        Sub Warn(ByVal id As Integer, ByVal message As Func(Of String))

        ''' <summary>
        ''' Writes the warning message using the specified argument array and format.
        ''' </summary>
        ''' <param name="format">The composite format string to write.</param>
        ''' <param name="args">The argument array to format.</param>
        Sub Warn(ByVal format As String, ByVal ParamArray args() As Object)

        ''' <summary>
        ''' Writes the warning message using the specified event identifier, argument array, and format.
        ''' </summary>
        ''' <param name="id">The event identifier for this message.</param>
        ''' <param name="format">The composite format string to write.</param>
        ''' <param name="args">The argument array to format.</param>
        Sub Warn(ByVal id As Integer, ByVal format As String, ByVal args() As Object)

        ''' <summary>
        ''' Writes the specified error message.
        ''' </summary>
        ''' <param name="message">A function generating the message to write.</param>
        Sub [Error](ByVal message As Func(Of String))

        ''' <summary>
        ''' Writes the specified error message with the specified event identifier.
        ''' </summary>
        ''' <param name="id">The event identifier for this message.</param>
        ''' <param name="message">A function generating the message to write.</param>
        Sub [Error](ByVal id As Integer, ByVal message As Func(Of String))

        ''' <summary>
        ''' Writes the error message using the specified argument array and format.
        ''' </summary>
        ''' <param name="format">The composite format string to write.</param>
        ''' <param name="args">The argument array to format.</param>
        Sub [Error](ByVal format As String, ByVal ParamArray args() As Object)

        ''' <summary>
        ''' Writes the error message using the specified event identifier, argument array, and format.
        ''' </summary>
        ''' <param name="id">The event identifier for this message.</param>
        ''' <param name="format">The composite format string to write.</param>
        ''' <param name="args">The argument array to format.</param>
        Sub [Error](ByVal id As Integer, ByVal format As String, ByVal args() As Object)

        ''' <summary>
        ''' Writes the specified critical error message.
        ''' </summary>
        ''' <param name="message">A function generating the message to write.</param>
        Sub Critical(ByVal message As Func(Of String))

        ''' <summary>
        ''' Writes the specified critical error message with the specified event identifier.
        ''' </summary>
        ''' <param name="id">The event identifier for this message.</param>
        ''' <param name="message">A function generating the message to write.</param>
        Sub Critical(ByVal id As Integer, ByVal message As Func(Of String))

        ''' <summary>
        ''' Writes the critical error message using the specified argument array and format.
        ''' </summary>
        ''' <param name="format">The composite format string to write.</param>
        ''' <param name="args">The argument array to format.</param>
        Sub Critical(ByVal format As String, ByVal ParamArray args() As Object)

        ''' <summary>
        ''' Writes the critical error message using the specified event identifier, argument array, and format.
        ''' </summary>
        ''' <param name="id">The event identifier for this message.</param>
        ''' <param name="format">The composite format string to write.</param>
        ''' <param name="args">The argument array to format.</param>
        Sub Critical(ByVal id As Integer, ByVal format As String, ByVal args() As Object)
    End Interface

End Namespace