You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gpustack/hack/lib/windows/log.ps1

124 lines
3.1 KiB

# Logger variables helpers. These functions need the following variables:
# LOG_LEVEL - The level of logger, default is "debug".
$log_level = $env:LOG_LEVEL -or "debug"
$log_colorful = $env:LOG_COLORFUL -or $true
function GPUStack.Log.Errexit {
trap {
$ErrorMessage = $_.Exception.Message
$ErrorCode = $_.Exception.HResult
GPUStack.Log.Panic -message $ErrorMessage -code $ErrorCode
continue
}
}
# Debug level logging.
function GPUStack.Log.Debug {
param (
[Parameter(Position = 0)]
[string]$message
)
if ($log_level -ne "debug") {
return
}
$timestamp = Get-Timestamp
Write-Output "[$timestamp] [DEBG] $message"
}
# Info level logging.
function GPUStack.Log.Info {
param (
[Parameter(Position = 0)]
[string]$message
)
if ($log_level -ne "debug" -and $log_level -ne "info") {
return
}
$timestamp = Get-Timestamp
if ($log_colorful -eq $true) {
Write-Host "[$timestamp] " -NoNewline
Write-Host "[INFO] " -NoNewline -ForegroundColor Blue
Write-Host $message
}
else {
Write-Output "[$timestamp] [INFO] $message"
}
}
# Warn level logging.
function GPUStack.Log.Warn {
param (
[Parameter(Position = 0)]
[string]$message
)
$timestamp = Get-Timestamp
if ($log_colorful -eq $true) {
Write-Host "[$timestamp] " -NoNewline
Write-Host "[WARN] " -NoNewline -ForegroundColor Yellow
Write-Host $message
}
else {
Write-Output "[$timestamp] [WARN] $message"
}
}
# Error level logging, log an error but keep going, don't dump the stack or exit.
function GPUStack.Log.Error {
param (
[Parameter(Position = 0)]
[string]$message
)
$timestamp = Get-Timestamp
if ($log_colorful -eq $true) {
Write-Host "[$timestamp] " -NoNewline
Write-Host "[ERRO] " -NoNewline -ForegroundColor Red
Write-Host $message
}
else {
Write-Output "[$timestamp] [ERRO] $message"
}
}
# Fatal level logging, log an error but exit with 1, don't dump the stack or exit.
function GPUStack.Log.Fatal {
param (
[Parameter(Position = 0)]
[string]$message
)
$timestamp = Get-Timestamp
if ($log_colorful -eq $true) {
Write-Host "[$timestamp] " -NoNewline
Write-Host "[FATA] " -NoNewline -ForegroundColor Red
Write-Host $message
}
else {
Write-Output "[$timestamp] [FATA] $message"
}
exit 1
}
# Panic level logging, dump the error stack and exit.
function GPUStack.Log.Panic {
param (
[string]$message,
[int]$code = 1
)
$timestamp = Get-Timestamp
$formattedMessage = "[$timestamp] [FATA] $message"
if ($log_colorful -eq $true) {
Write-Error $formattedMessage
} else {
Write-Output $formattedMessage
}
$customStackTrace = [System.Diagnostics.StackTrace]::new()
$customStackTrace.GetFrames() | ForEach-Object {
Write-Error (" {0}: {1}" -f $_.GetFileName(), $_.GetFileLineNumber())
}
exit $code
}
function Get-Timestamp {
return $(Get-Date -Format 'MMdd HH:mm:ss')
}