Ceci est une ancienne révision du document !
~~CLOSETOC~~
Add-Log - Ajouter des messages dans un fichier log et dans la console
La gestion des inscriptions dans un fichier log ou l'affichage d'information dans la console sont des étapes cruciales dans un script. L'affichage console permet à un administrateur de savoir ce qu'il se passe en temps réel et les logs, après coup. Il est donc important d'inscrire et d'afficher les informations lorsque c'est nécessaire. C'est le but de cette fonction.
Script
# Fonction d'écriture de log dans un fichier et/ou dans la console
Function Add-Log()
{
<#
.SYNOPSIS
Fonction d'écriture de log dans un fichier et/ou dans la console.
.DESCRIPTION
Cette Cmdlet enregistre une information horodatée dans le fichier spécifié. L'information est précédée d'une étiquette précisant son degré d'importance.
.PARAMETER Type
Précise le degré d'importance du message à enregistrer. Les valeurs possibles sont INFO, GOOD, WARN, CRIT et UNKN.
.PARAMETER Message
Indique le texte à enregistrer.
.PARAMETER Line
Enregistre une ligne (séparation) dans le fichier de log.
.PARAMETER LogFile
Chemin du fichier log dans lequel enregister les informations.
.PARAMETER Out
Indique où doit être inscrit les logs :
LogFile : le message est inscrit uniquement dans le fichier log indiqué.
Console : le message est affiché uniquement dans la console. Une coloration syntaxique sera associé au niveau type de message.
Both : le message est à la fois inscrit dans le fichier log et affiché dans la console.
.EXAMPLE
Add-Log -LogFile C:\test.log -Type INFO -Message "Ceci est un test" -Out LogFile
Exécuté le 21/09/2012 à 13h24.57, cette commande ajoutera dans le fichier C:\test.log, une ligne sous le format :
21/09/2012 13:24:57 INFO Ceci est un test
.EXAMPLE
Add-Log -LogFile C:\test.log -Line -Out LogFile
Ajoute une ligne dans le fichier C:\test.log
.INPUTS
Pas de pipeline. Seulement les arguments nommés.
.OUTPUTS
Affichage console avec le paramètre -Out (Console ou Both)
Ajout de données dans un fichier spécifié avec le paramètre -Out (LogFile ou Both)
.NOTES
Crée par Nicolas THOREZ, Shyrka System
.LINK
https://www.shyrkasystem.com
#>
Param
(
# Type de Message
[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
[ValidateSet("INFO", "GOOD", "CRIT", "WARN", "UNKN")]
[string]$Type,
# Message à enregistrer et/ou afficher
[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
[string]$Message,
# Switch pour demander de tracer une ligne (séparation) dans le log
[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
[switch]$Line,
# Fichier dans lequel enregistrer les logs
[Parameter(Mandatory = $true, ValueFromPipeline = $false)]
[string]$LogFile,
# Mode de sortie (log, console ou les deux)
[Parameter(Mandatory = $true, ValueFromPipeline = $false)]
[ValidateSet("LogFile", "Console", "Both")]
[string]$Out
)
# On teste si le fichier existe sinon on le crée
If (-not (Test-Path -Path $LogFile))
{
New-Item -Path $LogFile -ItemType File | Out-Null
}
If ($Line)
{
# Si on a activer le switch -Line, on ajoute une ligne dans le fichier log un ligne
If ($Out -ne "LogFile")
{
# On affiche dans la console
Write-Host "----------------------------------------------------------------------"
}
If ($Out -ne "Console")
{
# On inscrit dans le fichier log
Add-Content -Path $LogFile -Value "----------------------------------------------------------------------"
}
}
Else
{
# Sinon, on traite le message
$CheckTime = Get-Date -Format G
If ($Out -ne "LogFile")
{
# On affiche le message avec une certaine coloration syntaxique
Switch ($Type)
{
"INFO"
{
$Color = "cyan"
}
"GOOD"
{
$Color = "green"
}
"WARN"
{
$Color = "yellow"
}
"CRIT"
{
$Color = "red"
}
"UNKN"
{
$Color = "magenta"
}
}
Write-Host "$CheckTime " -NoNewline
Write-Host "$type " -NoNewline -ForegroundColor $Color
Write-Host $Message
}
If ($Out -ne "Console")
{
Add-Content -Path $LogFile -Value "$CheckTime $Type $Message"
}
}
}
Exemple
Cas n°1
Les commandes suivantes :
Add-Log -LogFile C:\Temp\Test.log -Type INFO -Message "Ceci est un message d'information" -Out LogFile Add-Log -LogFile C:\Temp\Test.log -Type WARN -Message "Ceci est un avertissement" -Out LogFile Add-Log -LogFile C:\Temp\Test.log -Type CRIT -Message "Ceci est une alerte critique" -Out LogFile
vont ajouter des informations dans le fichier C:\Temp\Test.log. La lecture de ce fichier donnera :
29/11/2019 10:06:07 INFO Ceci est un message d'information 29/11/2019 10:06:07 WARN Ceci est un avertissement 29/11/2019 10:06:09 CRIT Ceci est une alerte critique
Cas n°2
En ajoutant -Console :
Add-Log -LogFile C:\Temp\Test.log -Type INFO -Message "Ceci est un message d'information" -Out Both Add-Log -LogFile C:\Temp\Test.log -Type WARN -Message "Ceci est un avertissement" -Out Both Add-Log -LogFile C:\Temp\Test.log -Type CRIT -Message "Ceci est une alerte critique" -Out Both
On obtient dans le fichier log :
12/12/2019 10:09:11 INFO Ceci est un message d'information 12/12/2019 10:09:11 WARN Ceci est un avertissement 12/12/2019 10:09:11 CRIT Ceci est une alerte critique
et dans la console :
— Nicolas THOREZ 2019/11/29 09:18
Discussion