<# .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 : $_" } }