Некоторые картинки не загружаются из РФ и РК, используйте VPN.

среда, 13 марта 2024 г.

Posh script Простенькая функция логирования

 


# Имя файла лога отличается от имени скрипта только расширением
$ScriptPath=(Get-Item $PSCommandPath).Directory
$ScriptBaseName=(Get-Item $PSCommandPath).BaseName

$LogFile="$ScriptPath\$ScriptBaseName.log"

$whatif=$false

# простенькая функция логирования, если файл есть, то пишет в него
# можно было использовать tee-object, но этот командлет выдает ошибку при отсутствии папки для лога
# CheckRepeat проверяет последнюю строку лога с будущей, чтобы не засорять файл
# level - число - 
function Logging($Message,$Level=0,$CheckRepeat=$false){
	if ("$Message" -eq ""){
		return
	}
	$mLevel=switch($level){
		0 {New-Object psobject -Property @{label="[INF]";color="White"}}
		1 {New-Object psobject -Property @{label="[WAR]";color="Yellow"}}
		2 {New-Object psobject -Property @{label="[ERR]";color="Red"}}
	}
    $CurrentTimeStamp=Get-Date -Format "dd.MM.yyyy`tHH:mm:ss"
    Write-Host "$Message" -ForegroundColor  $mLevel.color
	
	if ($whatif){return}
    if (-not (Test-Path $LogFile)) {New-Item -Path $LogFile -ItemType File -ErrorAction SilentlyContinue}  
	if (Test-Path $LogFile) {
		$lastLine=""
		if ($CheckRepeat){
			$lastLine=$(Get-Content -Path $LogFile)[-1].Split("`t")[-1]
		}
		if ("$Message" -ne "$lastLine"){
			Write-Output("$CurrentTimeStamp`t$($mLevel.label)`t$Message") | Out-File $LogFile -Append
		}
	}
}

 

Комментариев нет:

Отправить комментарий