본문 바로가기

전산

# 윈도우 서버에서 로그파일을 주기적으로 삭제하는 방법

반응형

윈도우 서버를 운영하다 보면 시스템, 애플리케이션, 보안 로그 등 다양한 로그 파일이 쌓이게 됩니다. 시간이 지날수록 이러한 로그 파일은 디스크 용량을 소모하고, 서버 성능 저하의 원인이 될 수 있습니다. 특히 이벤트 로그 외에도 자체적으로 생성되는 텍스트 기반의 로그 파일(.log, .txt 등)은 정리되지 않으면 운영 리스크로 이어질 수 있습니다.

이 글에서는 윈도우 서버에서 로그 파일을 자동으로 정기 삭제하는 가장 효율적인 방법을 안내합니다. PowerShell 스크립트, 작업 스케줄러(Task Scheduler)를 이용한 자동화 방법과 함께, 주의사항, 백업 여부 등도 함께 살펴보겠습니다.


1. 왜 로그 파일을 주기적으로 삭제해야 할까?

  • 디스크 공간 확보: 불필요한 로그 파일은 하드디스크 용량을 점유합니다.
  • 시스템 성능 유지: 파일이 많아질수록 검색 및 접근 속도 저하 가능성.
  • 보안 관리: 오래된 로그 파일에는 민감 정보가 남아있을 수 있음.
  • 운영 효율성 향상: 자동화로 수동 삭제의 번거로움 해소.

2. 로그 파일 삭제 대상 확인

삭제할 로그 파일은 보통 아래 경로에 위치합니다:

  • C:\Windows\System32\LogFiles\
  • C:\inetpub\logs\LogFiles\
  • 사용자 지정 애플리케이션의 로그 디렉토리 (예: D:\AppLogs\)

삭제 전 꼭 필요한 로그는 백업하세요. 예기치 않은 문제 분석에 사용될 수 있습니다.


3. PowerShell을 활용한 로그 파일 삭제 스크립트

다음은 30일 이상된 로그 파일을 자동 삭제하는 PowerShell 스크립트 예시입니다.

# 삭제 대상 경로 지정
$logPath = "D:\AppLogs"
# 유지 기간(일 수)
$retentionDays = 30

# 현재 날짜 기준으로 오래된 파일 삭제
Get-ChildItem -Path $logPath -Recurse -Include *.log, *.txt |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$retentionDays) } |
Remove-Item -Force

주요 설명:

  • Get-ChildItem: 지정된 경로의 파일 목록을 가져옵니다.
  • Where-Object: 마지막 수정일 기준으로 오래된 파일 필터링.
  • Remove-Item: 해당 파일 삭제.

4. 작업 스케줄러(Task Scheduler)로 자동 실행 설정

PowerShell 스크립트를 자동으로 실행하려면 작업 스케줄러를 사용합니다.

설정 절차:

  1. 작업 스케줄러 실행
    • 시작 > 작업 스케줄러 입력 후 실행
  2. 기본 작업 만들기(Create Basic Task)
    • 이름 예: Log File Auto Cleanup
    • 설명 추가 가능
  3. 트리거(Trigger) 설정
    • 예: 매일 또는 매주 실행
  4. 작업 설정
    • 동작: 프로그램 시작
    • 프로그램/스크립트: powershell.exe
    • 인수 추가:
      -ExecutionPolicy Bypass -File "D:\Scripts\DeleteLogs.ps1"
  5. 완료 후 테스트
    • 수동 실행 또는 다음 예약 시간까지 대기

5. 보안 및 주의 사항

  • ExecutionPolicy 설정: 기본적으로 PowerShell은 스크립트 실행을 제한할 수 있습니다. Bypass 옵션 사용 권장.
  • 권한 확인: 로그 파일 삭제 권한이 있는 사용자 계정으로 실행.
  • 백업 정책 병행 권장: 삭제 전에 클라우드나 NAS 등으로 로그를 백업해두는 것도 좋습니다.
  • 테스트 실행: 실제 삭제 전에 -WhatIf 옵션을 통해 어떤 파일이 삭제될지 확인 가능.
Remove-Item -Path "D:\AppLogs\*.log" -WhatIf

6. 로그 파일 정리 외 추가 팁

  • 압축 보관: 삭제 대신 7-Zip이나 PowerShell로 압축 후 보관도 가능.
  • Logrotate 대안: 윈도우 환경에서도 Linux의 logrotate처럼 주기적 로깅 관리 스크립트를 구성 가능.
  • 타사 솔루션 활용: SolarWinds, Nagios 등 로그 모니터링 툴과 연계하면 더욱 체계적 관리 가능.

7. 요약

항목 설명
대상 파일 .log, .txt, 기타 로그 형식
삭제 기준 수정일 기준으로 N일 이상 지난 파일
도구 PowerShell + 작업 스케줄러
실행 주기 일간, 주간 등 자유롭게 설정
보안 관리자 권한, 백업 확인 필수

자주 묻는 질문 (FAQ)

Q1. .evtx 형식의 이벤트 로그도 삭제 가능한가요?

A. 네, PowerShell의 wevtutil 명령어를 이용해 이벤트 로그를 정리할 수 있습니다. 다만 .evtx 로그는 윈도우 시스템 로그로서 신중하게 관리해야 하며, 삭제보다는 백업 후 정리가 권장됩니다.

wevtutil cl Application
wevtutil cl System

Q2. PowerShell 스크립트를 실행해도 삭제가 되지 않아요.

A. 다음 사항을 확인해보세요:

  • 실행 권한 부족 (관리자 권한 필요)
  • ExecutionPolicy 제한
  • 경로 오타 또는 존재하지 않는 경로
  • 파일이 열려 있어 삭제 불가 상태

Q3. 로그를 삭제하지 않고 압축해서 보관할 수 있나요?

A. 가능합니다. PowerShell에서 압축도 가능합니다:

Compress-Archive -Path "D:\AppLogs\*.log" -DestinationPath "D:\Backups\Logs_$(Get-Date -Format yyyyMMdd).zip"

Q4. 이 작업을 여러 서버에 적용하려면 어떻게 하나요?

A. 다음 방법 중 하나를 활용하세요:

  • 공통 스크립트 + 공유 스케줄러 설정
  • 그룹 정책(GPO)을 통해 배포
  • Ansible, SCCM, PowerShell Remoting 등 자동화 도구 활용

마무리

윈도우 서버의 로그 파일은 서버 관리와 보안 측면에서 중요한 역할을 합니다. 하지만 관리되지 않으면 디스크 공간을 낭비하고, 불필요한 리스크를 초래할 수 있습니다. 이 글에서 소개한 방법을 통해 로그 파일 자동 정리를 실현해보세요.

작업은 간단하지만, 정기적 점검과 백업 정책 병행을 통해 더 안전하고 효율적인 서버 운영이 가능합니다.


🔍 관련 키워드: 윈도우 서버 로그 삭제, PowerShell 로그 정리, 작업 스케줄러 로그 자동 삭제, log cleanup script, Windows Server log maintenance

반응형