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"
# 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 = {
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'"
function Write-JobLog($message) {
function Write-JobLog($message, $suppressConsole = $false) {
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$logEntry = "$timestamp [JOB-$JobId] $message"
if ($jobLogFile -and $jobLogFile.Trim() -ne "") {
try {
Add-Content -Path $jobLogFile -Value $logEntry -Encoding UTF8
# Output to console for debugging
Write-Output "LOGGED TO $jobLogFile : $logEntry"
# Output to console for debugging (unless suppressed)
if (-not $suppressConsole) {
Write-Output "LOGGED TO $jobLogFile : $logEntry"
}
} catch {
Write-Output "LOG ERROR: $($_.Exception.Message) - File: $jobLogFile"
}
} else {
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 {
@@ -216,8 +227,7 @@ function Start-BackupJob($jobId, $sqlInstance, $query, $baseLogFile) {
$message = $e.Message
if ($message -and $message.Trim() -ne "") {
$script:infoMessages += $message
Write-JobLog "SQL INFO: $message"
Write-Output "SQL INFO: $message" # Also output for Receive-Job
Write-JobLog "SQL INFO: $message" $true # Suppress console output for verbose messages
}
})
@@ -254,12 +264,12 @@ function Start-BackupJob($jobId, $sqlInstance, $query, $baseLogFile) {
Write-JobLog $summaryMessage
Write-Output $summaryMessage # Also output for Receive-Job
# Output all captured SQL messages for debugging
Write-Output "=== SQL MESSAGES START ==="
# Output all captured SQL messages for debugging (only to log file, not console)
Write-JobLog "=== SQL MESSAGES START ===" $true
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
Write-Output "JOB-${JobId}: SUCCESS"
@@ -330,7 +340,7 @@ Write-Log "Starting $Jobs parallel backup jobs using DatabasesInParallel feature
[System.Collections.ArrayList]$jobList = @()
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)
Write-Log "Started backup job $i (Job ID: $($job.Id))"
Start-Sleep -Milliseconds 100 # Small delay to stagger job starts