본문 바로가기

IT

windows 서버 오래된 로그 자동 삭제 (로그 지옥에서 벗어나기)

반응형

IIS 라던지, IIS 에서...........

로그 파일을 logback 등의 rolling policy 같은 정책을 지정할 수 없어, 시간이 지날 수록 로그 파일이 점점 많아집니다.

드라이브의 용량이 줄어들지 않도록 관리할 필요가 있습니다.

 

방법은 간단합니다.

  • 오래된 로그를 삭제해주면 됩니다.
  • 삭제 작업을 작업 스케쥴러를 통해서 자동화하면 됩니다.

오래된 로그 삭제 스크립트 작성

최근 windows 에는 powershell 이 필수적으로 설치되어 있고, powershell.exe 가 설치된 위치는 아마도,

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 일 겁니다.

스크립트는 간단하고, 주석이 있으니 별도의 설명은 없습니다.

# 삭제할 폴더 경로
$folderPath = "C:\inetpub\logs\LogFiles\W3SVC2"

# 현재 날짜와 30일 이전의 날짜 계산
$cutOffDate = (Get-Date).AddDays(-30)

# 폴더 내 모든 파일을 가져오고, 최근 수정된 파일만 필터링하여 선택
Get-ChildItem -Path $folderPath | Where-Object { $_.LastWriteTime -lt $cutOffDate } | ForEach-Object {
    Write-Host "Deleting file: $($_.FullName)"
    Remove-Item $_.FullName -Force
}

Write-Host "Old files have been deleted."

위 내용을 적당한 위치에 cleanup_iis_old_logs.ps1 등으로 저장해 둡니다.

 

작업 스케쥴러에 등록하기

작업 스케쥴러에서 `새 작업 만들기`를 눌러서 작업을 만듭니다.

일반

로그 삭제 기능은 특정 사용자가 로그인하지 않아도 동작해야 하므로, 일반 - 보안 옵션에서 `사용자의 로그온 여부와 상관없이 실행` 을 선택해 주거나,

작업을 실행할 계정을 SYSTEM 으로 전환, 가장 높은 수준의 권한으로 실행 을 선택해셔 설정할 수도 있습니다.

트리거

저는 매일 오전 5시에 로그를 정리하라고 설정했습니다. 어떤 주기로 동작할 것인지는 원하시는 대로 설정해 줍니다.

`사용`을 꼭 체크해 줍니다.

동작

동작은 `프로그램 시작`

프로그램은 `C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe`

인수추가는 `C:\Users\webmanager\Documents\cleanup_iis_old_logs.ps1`

위 설정은 자신의 powershell 설치 위치와 스크립트 위치에 따라 적절히 넣으세요.

조건, 설정, 기록

기본 설정을 그대로 사용합니다. (필요하시면 경우에 따라 설정하세요.)

작업 스케쥴러 작업 테스트

작업이 등록되었다면 등록된 작업에서 마우스 오른쪽 버튼 클릭 후 실행을 선택하여 수동으로 실행해 볼 수 있습니다.

 

여기까지 누적되는 로그 파일의 공포에서 벗어나는 방법이었습니다. 끝.

반응형