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