Logging fixes

This commit is contained in:
2025-10-22 17:41:14 +01:00
parent 88bdab08d2
commit 57ec688996

View File

@@ -167,7 +167,13 @@ EXECUTE [dbo].[DatabaseBackup]
Write-Log "SQL Query: $query" Write-Log "SQL Query: $query"
# Function to execute backup job with message capture # Function to execute backup job with message capture
function Start-BackupJob($jobId, $sqlInstance, $query, $baseLogFile) { function Start-BackupJob {
param(
[int]$jobId,
[string]$sqlInstance,
[string]$query,
[string]$baseLogFile
)
$scriptBlock = { $scriptBlock = {
param($JobId, $SqlInstance, $Query, $BaseLogFile) param($JobId, $SqlInstance, $Query, $BaseLogFile)
@@ -184,21 +190,26 @@ function Start-BackupJob($jobId, $sqlInstance, $query, $baseLogFile) {
Write-Output "DEBUG: Job log file will be: '$jobLogFile'" Write-Output "DEBUG: Job log file will be: '$jobLogFile'"
function Write-JobLog($message) { function Write-JobLog($message, $suppressConsole = $false) {
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$logEntry = "$timestamp [JOB-$JobId] $message" $logEntry = "$timestamp [JOB-$JobId] $message"
if ($jobLogFile -and $jobLogFile.Trim() -ne "") { if ($jobLogFile -and $jobLogFile.Trim() -ne "") {
try { try {
Add-Content -Path $jobLogFile -Value $logEntry -Encoding UTF8 Add-Content -Path $jobLogFile -Value $logEntry -Encoding UTF8
# Output to console for debugging # Output to console for debugging (unless suppressed)
Write-Output "LOGGED TO $jobLogFile : $logEntry" if (-not $suppressConsole) {
Write-Output "LOGGED TO $jobLogFile : $logEntry"
}
} catch { } catch {
Write-Output "LOG ERROR: $($_.Exception.Message) - File: $jobLogFile" Write-Output "LOG ERROR: $($_.Exception.Message) - File: $jobLogFile"
} }
} else { } else {
Write-Output "NO LOG FILE: jobLogFile is empty or null" Write-Output "NO LOG FILE: jobLogFile is empty or null"
} }
Write-Output $logEntry # Always output to console for job monitoring (unless suppressed)
if (-not $suppressConsole) {
Write-Output $logEntry
}
} }
try { try {
@@ -216,8 +227,7 @@ function Start-BackupJob($jobId, $sqlInstance, $query, $baseLogFile) {
$message = $e.Message $message = $e.Message
if ($message -and $message.Trim() -ne "") { if ($message -and $message.Trim() -ne "") {
$script:infoMessages += $message $script:infoMessages += $message
Write-JobLog "SQL INFO: $message" Write-JobLog "SQL INFO: $message" $true # Suppress console output for verbose messages
Write-Output "SQL INFO: $message" # Also output for Receive-Job
} }
}) })
@@ -254,12 +264,12 @@ function Start-BackupJob($jobId, $sqlInstance, $query, $baseLogFile) {
Write-JobLog $summaryMessage Write-JobLog $summaryMessage
Write-Output $summaryMessage # Also output for Receive-Job Write-Output $summaryMessage # Also output for Receive-Job
# Output all captured SQL messages for debugging # Output all captured SQL messages for debugging (only to log file, not console)
Write-Output "=== SQL MESSAGES START ===" Write-JobLog "=== SQL MESSAGES START ===" $true
foreach ($msg in $infoMessages) { foreach ($msg in $infoMessages) {
Write-Output "SQL: $msg" Write-JobLog "SQL: $msg" $true
} }
Write-Output "=== SQL MESSAGES END ===" Write-JobLog "=== SQL MESSAGES END ===" $true
# Don't return hashtable - just output success message # Don't return hashtable - just output success message
Write-Output "JOB-${JobId}: SUCCESS" Write-Output "JOB-${JobId}: SUCCESS"
@@ -330,7 +340,7 @@ Write-Log "Starting $Jobs parallel backup jobs using DatabasesInParallel feature
[System.Collections.ArrayList]$jobList = @() [System.Collections.ArrayList]$jobList = @()
for ($i = 1; $i -le $Jobs; $i++) { for ($i = 1; $i -le $Jobs; $i++) {
$job = Start-BackupJob -jobId $i -sqlInstance $SqlInstance -query $query -logFile $logFile $job = Start-BackupJob -jobId $i -sqlInstance $SqlInstance -query $query -baseLogFile $logFile
$null = $jobList.Add($job) $null = $jobList.Add($job)
Write-Log "Started backup job $i (Job ID: $($job.Id))" Write-Log "Started backup job $i (Job ID: $($job.Id))"
Start-Sleep -Milliseconds 100 # Small delay to stagger job starts Start-Sleep -Milliseconds 100 # Small delay to stagger job starts