TrainingUtils.TJR.psm1

<#
    .SYNOPSIS
    Realiza los log del sistema tanto en un archivo logging.log
    como por pantalla si es requerido.
 
    .PARAMETER logType
    Tipo de error, se utilizan los más comunes: INFO, VERBOSE, WARNING, DEBUG y ERROR.
 
    .PARAMETER message
    Mensaje a utilizar.
 
    .PARAMETER logFile
    Archivo donde se realiza el logeo del script.
 
    .NOTES
    Author: Tomás Rosales
    For: Máster en DevOps & Cloud Computing IL3 - UB - Módulo 10
#>


function Write-TrainingUtilsLog() {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true, HelpMessage = "Tipo de Log")]
        [ValidateSet("INFO", "VERBOSE", "WARNING", "DEBUG", "ERROR")]
        [string] $publish,

        [Parameter(Mandatory = $true, HelpMessage = "Mensaje")]
        [string] $message,

        [Parameter(Mandatory = $true, HelpMessage = "Path al Archivo Logging")]
        [string] $logFilePath
    )
    $stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
    $logMessage = "{0} {1}: - {2}" -f $stamp, $logType, $message
    Save-LogFile -log $logMessage -logFile $logFilePath
    switch ($logType) {
        "INFO" { 
            Write-Information $logMessage
        }
        "WARNING" {
            Write-Warning $logMessage
        }
        "ERROR" {
            Write-Error $logMessage -ErrorAction Stop
        }
        "DEBUG" {
            Write-Debug $logMessage
        }
        "VERBOSE" {
            Write-Verbose $logMessage
        }
        Default {}
    }
}

function Save-LogFile([string]$log, [string] $logFilePath) {
    try {
        Add-content $logFilePath -value $log
    }
    catch {
        throw "File does not exists."
    }
    
}