AdToBrevo/modules/LogService.ps1
Administration 8699e89d9e Production
2025-12-08 11:01:09 +01:00

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