Collecting logs for support
When to use this page
You have a Levee problem that the other troubleshooting pages don't solve, and you want to send Vediram Support everything needed to investigate it in one go.
What you can do yourself
- Write down what you were doing, what you expected, and what happened.
- Copy any error message exactly, or take a screenshot.
- Note the time it happened. Logs are easier to search with a time.
- If the Levee app showed the "Levee can't start cleanly" window, click Copy details for IT and paste the text into an email or a file.
- Send all of this to your IT team, or open a support request (below).
Your IT team can then collect the logs with the script on this page.
Open a support request
- Go to Support requests and sign in with your Vediram account.
- Choose the category that fits (bug, question, feature or other).
- Describe what you did, what you expected and what happened, and paste any exact error message.
- Attach the zip file from your IT team (and the Copy details for IT text, if you have it).
If your account cannot open support requests, ask your Vediram administrator to grant you access.
For your IT team
What to collect
| Item | How to get it | Why |
|---|---|---|
| Health report | levee doctor --json | Service, engine, Windows Containers feature, disk, runtime image and logging state |
| Runtime status | levee runtime status --json | Provisioning phase and last error |
| Startup Doctor report | Copy details for IT in the Levee app | The failed checks, with technical details and versions |
| Diagnostic logs | levee log tail --since 1d --json | Service, proxy and app events for the user's projects |
| Audit excerpt | levee audit tail --lines 500 --json | What was allowed, denied and approved around the problem |
| Effective policy | levee policy show --json | The policy the machine is actually enforcing |
| Installer logs | %SystemRoot%\Temp\levee-prepare-host.log and your verbose MSI log | Only for install or upgrade problems |
| Engine events | Windows Event Log, source docker | Only for container engine problems |
Run the commands as the user who has the problem. levee log tail shows that user's own logs and projects. An administrator can add --all in an elevated session to read every user's and project's logs.
If levee audit tail fails with "Cannot read the audit log at" followed by a SQLite error 14, the machine runs a Levee version earlier than 0.64.0, where standard users could not read the audit log. Update Levee.
Review before you send
Levee's diagnostic logs are designed not to contain secrets, document content, SQL text or connection strings. The audit trail is different: it records what the agent did, including destination URLs, file paths, database queries (SQL text) and web search queries. Review the audit excerpt, and remove anything your organization does not allow you to share. Policy files contain rules and environment variable names, never the keys themselves.
Bundle everything with PowerShell
Run this in PowerShell 7. It creates a zip file in your temp folder and prints its path. Run it in an elevated session to include all users' logs and the installer logs.
$stamp = Get-Date -Format 'yyyyMMdd-HHmmss'
$outDir = Join-Path $env:TEMP "levee-support-$stamp"
New-Item -ItemType Directory -Path $outDir | Out-Null
$isAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(
[Security.Principal.WindowsBuiltInRole]::Administrator)
levee --version *> (Join-Path $outDir 'version.txt')
levee doctor --json *> (Join-Path $outDir 'doctor.json')
levee runtime status --json *> (Join-Path $outDir 'runtime-status.json')
levee policy show --json *> (Join-Path $outDir 'policy.json')
levee project list --json *> (Join-Path $outDir 'projects.json')
levee audit tail --lines 500 --json *> (Join-Path $outDir 'audit-excerpt.json')
if ($isAdmin) {
levee log tail --since 1d --all --json *> (Join-Path $outDir 'logs.json')
} else {
levee log tail --since 1d --json *> (Join-Path $outDir 'logs.json')
}
Get-Service LeveeService, LeveeContainerEngine -ErrorAction SilentlyContinue |
Select-Object Name, Status, StartType |
Out-File (Join-Path $outDir 'services.txt')
$cv = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
"{0} {1} build {2}.{3}" -f $cv.ProductName, $cv.DisplayVersion, $cv.CurrentBuild, $cv.UBR |
Out-File (Join-Path $outDir 'windows.txt')
Get-WinEvent -FilterHashtable @{ LogName = 'Application'; ProviderName = 'docker'; StartTime = (Get-Date).AddDays(-1) } `
-ErrorAction SilentlyContinue |
Select-Object TimeCreated, LevelDisplayName, Message |
Export-Csv (Join-Path $outDir 'engine-events.csv') -NoTypeInformation
if ($isAdmin) {
$prep = Join-Path $env:SystemRoot 'Temp\levee-prepare-host.log'
if (Test-Path $prep) { Copy-Item $prep $outDir }
$instLogs = Join-Path $env:ProgramData 'Vediram\Levee\installer\logs'
if (Test-Path $instLogs) { Copy-Item $instLogs (Join-Path $outDir 'installer-logs') -Recurse }
}
$zip = "$outDir.zip"
Compress-Archive -Path "$outDir\*" -DestinationPath $zip
Remove-Item $outDir -Recurse -Force
Write-Host "Support bundle: $zip"
If levee is not recognized, open a new PowerShell window after installation, or use the full path & "$env:ProgramFiles\Vediram\Levee\bin\levee.exe".
For an installation problem, also attach the verbose MSI log. See Installation fails a check.
Where Levee keeps its files
For reference, if Support asks for a specific file:
| Location | Contents |
|---|---|
%ProgramData%\Vediram\Levee\logs\ | Diagnostic logs (compressed JSON lines), per machine, project and user |
%ProgramData%\Vediram\Levee\levee-audit.db and levee-audit.jsonl | The audit trail |
%ProgramData%\Vediram\Levee\policy.json | The effective policy |
%ProgramData%\Vediram\Levee\config.json | Logging configuration |
%ProgramData%\Vediram\Levee\installer\logs\ | Installer wrapper logs |
%SystemRoot%\Temp\levee-prepare-host.log | Installer prerequisite checks |
%ProgramFiles%\Vediram\Levee\ | Levee's programs (the app, bin\ with the service, CLI and proxies, and engine\) |
See Files & locations and Logging.