본문 바로가기
Windows/PowerShell

PowerShell | Log 만들어서 파일 내보내기

by 지혜를 탐구하는 오딘 2022. 11. 21.
728x90
반응형

 

 

1. 개요

PowerShell을 하다보니, 로그를 찍어야 할 때가 있었습니다. 그래서 로그를 찍어서 파일로 내보내는 것을 직접 만들었습니다. 굳이 만들지 않고 다른 걸 가져다 사용해도 되지만, 하드한 걸 좋아하기 때문에 하드하게 만들었습니다.

 

감히 예상하건데, 저 말고 아무도 사용하지 않을 것 같습니다.

 

 

2. Log 만들어서 파일 내보내기

# StringBuilder 에 로그 내용 담기
$Out_StringBuilder = [System.Text.StringBuilder]::new()


# 콘솔에 로그 찍기
Function Write-Log
(
    [String] $log_type,
    [String] $message
)
{
	# 로그 타입을 전부 대문자로
    $log_type = $log_type.ToUpper()
    
    # 로그 내용에 시간 추가 ex) [2022-01-01 01:56:24] [WARN] 로그내용
    $full_log_message = "[" + (get-date).tostring("yyyy-MM-dd HH:mm:ss") + "] [$log_type]`t$message"
    
    # 그냥 변수(Temp)에 담아봤습니다.
    $Temp = $Out_StringBuilder.AppendLine($full_log_message)

	# 로그 타입이 에러면, 화면에 쓸 때에 배경과 색상 꾸미기
    if ($log_type -eq "ERROR")
    {
        Write-Host $full_log_message -BackgroundColor Black -ForegroundColor red
    }
    else
    {
        Write-Host $full_log_message
    }
}
# 끝 로그 만들기 + 콘솔에 로그 찍기
############################################


# 들어온 값을 파일로 내보내기
Function Export-Log
(
    [String] $log_directory,
    [String] $log_filename,
    [String] $log_String
)
{
    # Create Log Directory if it is NULL
    if ( !(Test-Path $log_directory) )
    {
        New-Item -Path $log_directory -ItemType "Directory" -Force
    }

    # 로그 파일이름
    $log_filename = (get-date).tostring("yyyyMMdd_HHmmss") + "_" + $log_filename
    
    # 로그 내용 파일로 내보내기
    $log_String | Out-File `
                        -FilePath $("$log_directory\$log_filename.txt") `
                        -Encoding OEM
}


$log_directory = "C:\temp"
$filename = "LOG_TESTER"



<# 당신의 코드를 입력하세요 #>
<# 당신의 코드를 입력하세요 #>
<# 당신의 코드를 입력하세요 #>

Write-Log "INFO" "이거 어떻게 사용하는거에요?"

<# 당신의 코드를 입력하세요 #>
<# 당신의 코드를 입력하세요 #>
<# 당신의 코드를 입력하세요 #>



# 스크립트 제일 마지막에 아래 코드를 필수로 실행
# StringBuilder 에 담아놓은 내용을 파일로 내보내기
Export-Log $log_directory $filename $($Out_StringBuilder)

 

Write-Log 에 내용을 입력하면 됩니다.

그 후 마지막에 "Export-Log"에 로그파일 저장 경로와 이름, $Out_StringBuiler 만 하면 됩니다.

 

 

3. 해당 코드를 실행한 모습

 

 

잘 실행되었습니다.

 

 

 

 

(출처)

98% 직접 머리를 짜내서...... 2%는 잃어버렸습니다. 

 

 

 

 

728x90
반응형

댓글