Warum LogLevel?
Nicht jeder Lauf braucht dieselbe Detailtiefe. Im normalen Betrieb genuegen oft Info, Warning und Error. Fuer Fehlersuche willst du zusaetzlich vielleicht Debug oder Verbose erlauben.
Logging Artikel
Wenn aus einer kleinen Loggingfunktion ein dauerhaft genutztes Betriebswerkzeug wird, reichen reine Logeintraege irgendwann nicht mehr. Dann werden LogLevel-Filter und Dateirotation wichtig.
Nicht jeder Lauf braucht dieselbe Detailtiefe. Im normalen Betrieb genuegen oft Info, Warning und Error. Fuer Fehlersuche willst du zusaetzlich vielleicht Debug oder Verbose erlauben.
Ohne Rotation wachsen Logs still weiter. Gerade bei Detection-Loops, Scheduled Tasks oder haeufigen Deployments kann das schnell unhandlich werden.
function Rotate-LogFile {
param(
[string]$Path,
[int]$MaxSizeMB = 5
)
if (Test-Path $Path) {
$file = Get-Item $Path
if ($file.Length -ge ($MaxSizeMB * 1MB)) {
$stamp = Get-Date -Format 'yyyyMMdd-HHmmss'
Move-Item -Path $Path -Destination ($Path + '.' + $stamp + '.bak') -Force
}
}
}
param(
[ValidateSet('Info','Warning','Error','Debug')]
[string]$MinimumLogLevel = 'Info'
)
$levelOrder = @{
Info = 1
Warning = 2
Error = 3
Debug = 0
}
if ($levelOrder[$Type] -lt $levelOrder[$MinimumLogLevel]) {
return
}
Im Standardbetrieb eher knappe Logs schreiben und bei Bedarf einen detailreicheren Modus aktivieren. So bleiben Logs lesbar und wachsen nicht unkontrolliert.
String-Sanitizing, strukturierter CMTrace-kompatibler Eintrag, LogLevel-Filter und Rotation ergeben zusammen eine robuste Loggingbasis fuer produktive Skripte.