Logging fixes
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user