Public/Logging/core/Close-KrLogger.ps1

<#
    .SYNOPSIS
        Closes the logger and flushes all logs.
    .DESCRIPTION
        Closes the logger and flushes all logs. If no logger is specified, it will close the default logger.
    .PARAMETER Logger
        Instance of Serilog.Logger to close. If not specified, the default logger will be closed.
    .INPUTS
        Instance of Serilog.Logger
    .OUTPUTS
        None. This cmdlet does not return any output.
    .EXAMPLE
        PS> Close-KrLogger -Logger $myLogger
        Closes the specified logger and flushes all logs.
    .EXAMPLE
        PS> Close-KrLogger
        Closes the default logger and flushes all logs.
#>

function Close-KrLogger {
    [KestrunRuntimeApi('Everywhere')]
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $false, ValueFromPipeline = $true)]
        [Serilog.ILogger]$Logger
    )

    process {
        if ($PSBoundParameters.ContainsKey('Logger')) {
            $Logger.Dispose()
        } else {
            [Serilog.Log]::CloseAndFlush()
        }
    }
}