<# .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. #> $Global:LogFolder = ".\logs" $Global:LogBaseName = "app" if (-not (Test-Path $Global:LogFolder)) { New-Item -Path $Global:LogFolder -ItemType Directory | Out-Null } $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 = Get-Date -Format "yyyy-MM-dd HH:mm:ss" $line = "[$timestamp] [$Level] $Message" Write-Output $line try { Add-Content -Path $Global:LogFile -Value $line } catch { Write-Warning "Impossible d'écrire dans le fichier de log : $_" } }