Skip to content

Instantly share code, notes, and snippets.

@AdamNaj
Last active June 2, 2024 18:34
Show Gist options
  • Save AdamNaj/bd0c56251049fe2aeea452e2a51e83eb to your computer and use it in GitHub Desktop.
Save AdamNaj/bd0c56251049fe2aeea452e2a51e83eb to your computer and use it in GitHub Desktop.
Most executed Solr queries from latest Sitecore logs
# Gets the latest 30 log files, filters only solr query lines from them, groups them by query content and orders by most executed,
# Letting you find things that are most effective to cache.
Set-HostProperty -HostWidth 2000
$logFileFilter = "azure.log.*"
$logfileCountToAnalyse = 30
$minQueryOccurence = 20
Get-ChildItem $SitecoreLogFolder -Recurse -Filter $logFileFilter `
| Sort -Property LastWriteTime -Descending `
| Select -first $logfileCountToAnalyse `
| Get-Content `
| ? {$_.Contains("INFO Solr Query - ?") } `
| % { $_.Substring($_.IndexOf("Solr Query - ?")+13) } `
| Group-Object `
| ? { $_.Count -gt $minQueryOccurence } `
| Sort-Object -Property Count -Descending `
| ft Count, Name
Clear-Host
# Gets large number of large log files, filters only Solr query lines from them, saves it to a file
# later takes that file and counts each queries more memory effectively
$logFileFilter = "azure.log.*.*"
$logfileCountToAnalyse = 200
$minQueryOccurence = 100
$SitecoreLogFolder = "C:\Projects\CD Logs\20240522"
$files = Get-ChildItem $SitecoreLogFolder -Recurse -Filter $logFileFilter `
| Sort -Property LastWriteTime -Descending `
| Select -first $logfileCountToAnalyse
$i = 0;
$count = $files.Count
$files | %{
$i = $i +1;
Write-Progress "$_.Name" -PercentComplete ($i/$count*100);
$_ }
| Get-Content `
| ? {$_.Contains("INFO Solr Query - ?") } `
| % { $_.Substring($_.IndexOf("Solr Query - ?")+13) }
| Set-Content "$SitecoreLogFolder.txt"
$queries = @{}
Get-Content "$SitecoreLogFolder.txt" |
ForEach-Object {
if($queries.Contains($_)){
$queries[$_] = $queries[$_]+1
} else {
$queries[$_] = 1;
}
}
$queries. Keys |
ForEach-Object { [PSCustomObject]@{Query = $_; Count=$queries[$_] } } |
Sort-Object -Property Count,Query -Descending |
Where-Object { $_.Count -gt 100} |
Format-Table Count, Query |
Out-String |
Set-Content "$SitecoreLogFolder.QueryContent.txt"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment