Functions/Other/Write-KEModuleLog.ps1

function Write-KEModuleLog {
    <#
    .SYNOPSIS
        Writes a log message to a file for a specific module.
    .DESCRIPTION
        The Write-KEModuleLog function creates a log file for a specific module and writes a message to that file.
    .PARAMETER ModuleName
        The name of the module for which to create a log file.
    .PARAMETER Message
        The log message to write to the file.
    .EXAMPLE
        Write-KEModuleLog -ModuleName "MyModule" -Message "An error occurred in MyModule."
    .NOTES
        The KrakenExchange PowerShell module is not affiliated with or endorsed by Kraken exchange.
        Author: wnapierala [@] hotmail.com, chatGPT
        Date: 04.2023
    #>

    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [string]$ModuleName,
        [Parameter(Mandatory = $true)]
        [string]$Message
    )

    # Get the path to the user's Documents folder
    $documentsFolder = [Environment]::GetFolderPath("MyDocuments")

    # Create a subfolder for the logs
    $logFolder = Join-Path -Path $documentsFolder -ChildPath "PowerShellLogs"

    if (-not (Test-Path -Path $logFolder -PathType Container)) {
        # Create the log folder if it doesn't exist
        New-Item -Path $logFolder -ItemType Directory | Out-Null
    }

    # Create a subfolder for the module logs
    $moduleLogFolder = Join-Path -Path $logFolder -ChildPath $ModuleName

    if (-not (Test-Path -Path $moduleLogFolder -PathType Container)) {
        # Create the module log folder if it doesn't exist
        New-Item -Path $moduleLogFolder -ItemType Directory | Out-Null
    }

    # Create the log file path
    $logFile = Join-Path -Path $moduleLogFolder -ChildPath "$ModuleName.log"

    # Write a message to the log file
    "$(Get-Date) - $Message" | Out-File -FilePath $logFile -Append
}