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 du log général et d'affichage console
Function Add-Log()
{
<#
.SYNOPSIS
Fonction d'écriture du log général et d'affichage console (si -Console ou -ConsoleOnly)
.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 Console
Affiche dans la console les informations enregistrées dans le fichier log.
Les informations bénéficient d'une coloration syntaxique spécifique à chaque niveau d'importance.
.PARAMETER ConsoleOnly
Affiche les informations uniquement dans la console.
Les informations bénéficient d'une coloration syntaxique spécifique à chaque niveau d'importance.
.EXAMPLE
Add-Log -LogFile C:\test.log -Type INFO -Message "Ceci est un test"
Exécuté le 21/09/2012 à 13h24.57, cettecommande 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
Ajoute une ligne dans le fichier C:\test.log
.INPUTS
Pas de pipeline. Seulement les argumentss nommées.
.OUTPUTS
Affichage console si -Console.
Ajout de données dans un fichier spécifié.
.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 verbeux, affichage des informations dans la console avec coloration syntaxique
[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
[switch]$Console,
# Mode console uniquement, pas d'inscription dans le fichier log
[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
[switch]$ConsoleOnly
)
If ($Line)
{
# Si on a activer le switch -Line, on ajoute une ligne dans le fichier log un ligne
If (($Console) -or ($ConsoleOnly))
{
# Si -Console est activée, on affiche dans la console
Write-Host "----------------------------------------------------------------------"
}
If (-not $ConsoleOnly)
{
Add-Content -Path $LogFile -Value "----------------------------------------------------------------------"
}
}
Else
{
# Sinon, on traite le message
$CheckTime = Get-Date -Format 'G'
If (($Console) -or ($ConsoleOnly))
{
# Si -Console est activé, 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 (-not $ConsoleOnly)
{
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" Add-Log -LogFile C:\Temp\Test.log -Type WARN -Message "Ceci est un avertissement" Add-Log -LogFile C:\Temp\Test.log -Type CRIT -Message "Ceci est une alerte critique"
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" -Console Add-Log -LogFile C:\Temp\Test.log -Type WARN -Message "Ceci est un avertissement" -Console Add-Log -LogFile C:\Temp\Test.log -Type CRIT -Message "Ceci est une alerte critique" -Console
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