55 lines
1.6 KiB
PowerShell
55 lines
1.6 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Service de logging pour les scripts PowerShell.
|
|
.DESCRIPTION
|
|
Fournit une fonction Write-Log qui logge des messages avec timestamp, niveau et fichier de log.
|
|
Ajoute une rotation automatique par jour et supprime les logs vieux de plus de 5 jours.
|
|
#>
|
|
|
|
# Définir le dossier de logs et le nom de fichier de base
|
|
$Global:LogFolder = ".\logs"
|
|
$Global:LogBaseName = "app"
|
|
|
|
# Crée le dossier de logs s'il n'existe pas
|
|
if (-not (Test-Path $Global:LogFolder)) {
|
|
New-Item -Path $Global:LogFolder -ItemType Directory | Out-Null
|
|
}
|
|
|
|
# Nom du fichier de log du jour
|
|
$Global:LogFile = Join-Path $Global:LogFolder "$($Global:LogBaseName)_$(Get-Date -Format 'yyyy-MM-dd').log"
|
|
|
|
# Supprimer les fichiers de log vieux de plus de 5 jours
|
|
$logFiles = Get-ChildItem -Path $Global:LogFolder -Filter "$($Global:LogBaseName)_*.log" -File
|
|
foreach ($file in $logFiles) {
|
|
if ($file.CreationTime -lt (Get-Date).AddDays(-5)) {
|
|
Remove-Item $file.FullName -ErrorAction SilentlyContinue
|
|
}
|
|
}
|
|
|
|
function Write-Log {
|
|
[CmdletBinding()]
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$Message,
|
|
|
|
[Parameter(Mandatory = $false)]
|
|
[ValidateSet("INFO", "WARN", "ERROR")]
|
|
[string]$Level = "INFO"
|
|
)
|
|
|
|
# Timestamp
|
|
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
|
|
$line = "[$timestamp] [$Level] $Message"
|
|
|
|
# Affiche à la console
|
|
Write-Output $line
|
|
|
|
# Écrit dans le fichier de log du jour
|
|
try {
|
|
Add-Content -Path $Global:LogFile -Value $line
|
|
}
|
|
catch {
|
|
Write-Warning "Impossible d'écrire dans le fichier de log : $_"
|
|
}
|
|
}
|