AdToBrevo/modules/LogService.ps1

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