TrainingUtils.IEVM.psm1

<#
    .Synopsis
    Función para loguear información.
 
    .Description
    Esta función nos permite escribir logs de diferentes tipos para poder posteriormente persistirlo en disco.
 
    .Parameter logType
    Tipo de log: INFO, WARNING, ERROR, DEBUG y VERBOSE.
 
    .Parameter message
    Mensaje que queremos escribir en el log.
 
    .Parameter logFilePath
    Path donde vamos a guardar nuestro fichero de log.
 
    .Parameter Verboses
    Mostrar resultado por pantalla de logs tipo VERBOSE.
 
    .Parameter Debugs
    Mostrar resultado por pantalla de logs tipo DEBUG.
 
    .Example
    Write-TrainingUtilsLog -logType "INFO" -message "Esto es un mensaje informativo" -logFilePath ".\scriptLogging.log"
#>

function Write-TrainingUtilsLog() {
    [CmdletBinding()]
    param(
        [ Parameter(Mandatory=$true, HelpMessage="Tipo de log: INFO, WARNING, ERROR, DEBUG y VERBOSE") ]
        [ Alias("type") ]
        [ ValidateSet("INFO", "WARNING", "ERROR", "DEBUG", "VERBOSE") ]
        [string]$logType,

        [ Parameter(Mandatory=$true, HelpMessage="Mensaje que queremos escribir en el log") ]
        [ Alias("msg") ]
        [string]$message,

        [ Parameter(Mandatory=$false, HelpMessage="Path donde vamos a guardar nuestro fichero de log") ]
        [ Alias("path") ]
        [string]$logFilePath=".\scriptLogging.log",

        [ Parameter(Mandatory=$false, HelpMessage="Mostrar resultado por pantalla de logs tipo VERBOSE") ]
        [switch]$Verboses=$false,

        [ Parameter(Mandatory=$false, HelpMessage="Mostrar resultado por pantalla de logs tipo DEBUG") ]
        [switch]$Debugs=$false
    )
    $currentDate = Get-Date -Format "MM/dd/yyyy HH:mm K";
    $log = "$($currentDate) ($($logType)): $($message)"

    Write-TrainingUtilsToLogPrint -log $log -logType $logType -verboses $Verboses -debugs $Debugs;
    Write-TrainingUtilsToLogFile -log $log -logFilePath $logFilePath;
}

function Write-TrainingUtilsToLogPrint([string]$log, [string]$logType, [boolean]$verboses, [boolean]$debugs) {
    if ( ($logType -eq "DEBUG" -and $debugs) -or ($logType -eq "VERBOSE" -and $verboses) ) {
        Write-Host $log;
    }
    elseif ( ($logType -eq "INFO") -or ($logType -eq "WARNING") -or ($logType -eq "ERROR") ) {
        Write-Host $log;     
    }
}
function Write-TrainingUtilsToLogFile([string]$log, [string]$logFilePath) {
    Write-Host ($log | Add-Content $logFilePath);
}