187 lines
9.6 KiB
PowerShell
187 lines
9.6 KiB
PowerShell
# Prompt the user for a choice between prod and preprod
|
|
$environment = Read-Host "Enter environment (prod or preprod, testa)"
|
|
|
|
# Set the paths to search for log files based on the user's choice
|
|
if ($environment -eq "prod") {
|
|
$Paths = "\\REJ-P-WEB001.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-WEB002.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-WEB003.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-WEB004.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-WEB005.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-WEB006.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-WEB007.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-WEB008.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-APP001.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-APP002.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-APP003.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-APP004.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-API001.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-API002.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS001.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS002.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS003.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS004.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS005.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS006.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS007.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS008.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS009.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS010.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS011.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS012.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS013.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS014.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS015.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCS016.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCF001.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-TCF002.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-MDL001.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-MDL002.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-SPS001.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-SPS002.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-SPS003.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-SPS004.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-SPS005.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-SPS006.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-SPS007.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-SPS008.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-SPS009.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-SPS010.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-SPS011.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-DPS001.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-DPS002.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-DPS003.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-DPS004.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-DPS005.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-DPS006.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-FAS001.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-FAS002.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-FAS003.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-BCM001.REJprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-P-BCM002.REJprod.local\d-drive\IFSBOSystem\Log"
|
|
} elseif ($environment -eq "preprod") {
|
|
$Paths = "\\REJ-Q-WEB101.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-WEB102.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-WEB103.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-WEB104.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-WEB105.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-WEB106.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-APP101.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-APP102.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-API101.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-API102.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-TCS101.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-TCS102.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-TCF101.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-TCF102.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-MDL101.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-MDL102.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-SPS101.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-SPS102.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-DPS101.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-DPS102.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-FAS101.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-FAS102.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-BCM101.REJpreprod.local\d-drive\IFSBOSystem\Log",
|
|
"\\REJ-Q-BCM102.REJpreprod.local\d-drive\IFSBOSystem\Log"
|
|
}elseif ($environment -eq "testa") {
|
|
$Paths = "\\rej-a-api201\D-Drive\IFSBOSystem\Log",
|
|
"\\rej-a-app201\D-Drive\IFSBOSystem\Log",
|
|
"\\rej-a-bcm201\D-Drive\IFSBOSystem\Log",
|
|
"\\rej-a-dps201\D-Drive\IFSBOSystem\Log",
|
|
"\\rej-a-fas201\D-Drive\IFSBOSystem\Log",
|
|
"\\rej-a-mdl201\D-Drive\IFSBOSystem\Log",
|
|
"\\rej-a-sps201\D-Drive\IFSBOSystem\Log",
|
|
"\\rej-a-tcf201\D-Drive\IFSBOSystem\Log",
|
|
"\\rej-a-tcs201\D-Drive\IFSBOSystem\Log",
|
|
"\\rej-a-web201\D-Drive\IFSBOSystem\Log"
|
|
|
|
} else {
|
|
Write-Host "Invalid environment entered. Please enter correct envioment."
|
|
exit
|
|
}
|
|
|
|
|
|
|
|
# Define the script block to run in each thread
|
|
$ScriptBlock = {
|
|
param ($Path)
|
|
|
|
# Find all log files in the directory
|
|
$logFiles = Get-ChildItem -Path $Path -Filter "*.log" -File -Recurse | Where-Object { $_.PSIsContainer -or $_.Name -notmatch '^\d{4}-\d{2}-\d{2}' }
|
|
|
|
|
|
if ($logFiles.Count -eq 0) {
|
|
Write-Warning "No log files found in $($Path)"
|
|
return
|
|
}
|
|
|
|
# Get the current date and format it as "yyyy-MM-dd"
|
|
$currentDate = Get-Date -Format "yyyy-MM-dd"
|
|
|
|
# Iterate through each log file and count the number of lines written to the file during the current day
|
|
$logFileCounts = foreach ($file in $logFiles) {
|
|
if ($file.LastWriteTime -gt (Get-Date).AddDays(-1)) {
|
|
# Get the contents of the file and count the number of lines written to the file during the current day
|
|
$count = (Get-Content $file.FullName | Where-Object { $_ -match $currentDate }).Count
|
|
|
|
# Output the file name and the count of lines written to the file during the current day
|
|
[PSCustomObject]@{
|
|
FileName = $file.Name
|
|
FilePath = Split-Path $file.FullName -Parent
|
|
LinesWrittenToday = $count
|
|
}
|
|
}
|
|
}
|
|
|
|
# Return the log file counts for this path
|
|
return $logFileCounts
|
|
}
|
|
|
|
# Define an array to hold the job results
|
|
$jobResults = @()
|
|
|
|
# Start a job for each path
|
|
foreach ($Path in $Paths) {
|
|
$job = Start-Job -ScriptBlock $ScriptBlock -ArgumentList $Path
|
|
$jobResults += $job
|
|
}
|
|
|
|
# Wait for all jobs to complete
|
|
while (@($jobResults | Where-Object { $_.State -eq 'Running' }).Count -gt 0) {
|
|
Start-Sleep -Milliseconds 110
|
|
}
|
|
|
|
# Get the results of each job and combine them into a single array
|
|
$logFileCounts = foreach ($job in $jobResults) {
|
|
$job | Receive-Job
|
|
}
|
|
|
|
# Group the log file counts by file name and path and sum the line counts
|
|
$groupedLogFileCounts = $logFileCounts | ForEach-Object {
|
|
[PSCustomObject]@{
|
|
FileName = $_.FileName
|
|
FilePath = $_.FilePath
|
|
LinesWrittenToday = $_.LinesWrittenToday
|
|
}
|
|
} | Group-Object -Property @{Expression = {$_.FileName + "|" + $_.FilePath}} | ForEach-Object {
|
|
$fileName, $filePath = $_.Name.Split("|")
|
|
$serverName = $filePath -replace ".*\\\\([^\\]+).*", '$1'
|
|
[PSCustomObject]@{
|
|
FileName = $fileName
|
|
ServerName = $serverName
|
|
TotalLinesWrittenToday = ($_.Group | Measure-Object -Property LinesWrittenToday -Sum).Sum
|
|
}
|
|
} | Where-Object { $_.TotalLinesWrittenToday -ne 0 }
|
|
|
|
# Output the grouped log file counts
|
|
$groupedLogFileCounts | Sort-Object -Property ServerName | Format-Table -GroupBy ServerName -Property FileName, TotalLinesWrittenToday -AutoSize
|
|
|
|
# Calculate and output the total lines written today for all files
|
|
$totalLinesWrittenToday = $groupedLogFileCounts | Measure-Object -Property TotalLinesWrittenToday -Sum
|
|
"Total lines written today: $($totalLinesWrittenToday.Sum)"
|
|
|
|
|
|
$groupedcount = $groupedLogFileCounts | Group-Object -Property { $_.ServerName.Replace(".REJpreprod.local", "") } | Select-Object Name, @{Name="Types of Log Files"; Expression={$_.Count}}
|
|
|
|
$groupedcount |