IIS 로그 파일을 정기적으로 정리하려면 어떻게해야합니까?


20

방금 IIS가 로그를 무기한으로 빌드하고 오래된 로그 파일을 자동으로 정리하는 IIS 설정이없는 것으로 나타났습니다. IIS 로그를 제어하여 전체 하드 드라이브를 채우지 않는 가장 좋은 방법은 무엇입니까?


오래된 아카이브를 zip 아카이브에 보관하거나 삭제 하시겠습니까?
Jeff Atwood

로그 파일을 직접 관리해야합니다.
Evan Anderson

CCLeaner에는 IIS 로그 파일을 정리하는 옵션이 있습니다 !!!

답변:


22

예약 된 작업을 실행해야합니다. 다음은 작동해야하는 Powershell 스크립트입니다.

set-location c:\windows\system32\Logfiles\W3SVC1\ -ErrorAction Stop
foreach ($File in get-childitem -include *.log) {
   if ($File.LastWriteTime -lt (Get-Date).AddDays(-30)) {
      del $File
   }
}

30 일 이상 전에 마지막으로 수정 된 내용을 제거해야합니다. 첫 번째 행의 경로를 로그 파일이 저장된 위치로 변경하십시오. 또한 파일을 보존하려면 -30을 변경하십시오. -30은 30 일이 지난 항목을 삭제한다는 의미입니다.

LastWriteTime을 사용하지 않으려는 경우 FileInfo 객체의 다른 속성을 보여주는 이 기사 를 살펴볼 수 있습니다 .


1
Windows Server 2008 R2 (PS 2.0)에서 Get-ChildItem 호출을 다음과 같이 수정해야했습니다.Get-ChildItem *.* -include *.log
roryWoods

4

당신은 당신의 자신을 양조 할 수 있지만, 나는 영리한 사람이 이미 당신을 위해 이것을 썼다고 생각합니다. IISLogsIISLogs Lite를 확인하십시오 !

모든 작업이 로그를 삭제하는 것이라면 필요하지 않은 경우 로깅을 해제 할 수 있습니다! 서버에 많은 I / O를 저장합니다!


1
단지 업데이트이지만 IISLogs Lite는 한동안 사용할 수 없었으며 IISLogs는 저렴 하지 않습니다 .
베이컨 비트

3

현재 매우 간단한 배치 파일 스크립트를 사용 하여이 작업을 수행하고 있습니다.

forfiles -p C:\inetpub\logs\LogFiles\ -s -m *.log -d -180 -c "cmd /C DEL @File"

또한 예약 된 작업 항목을 만들어 매일 실행하고 해당 폴더의 파일 압축 기능을 활성화했습니다.이 모든 것들이 IIS 파일 관련 문제를 해결했습니다.

배치 파일의 스위치에 대한 설명 :

  • -s 또는 / S : 모든 하위 폴더로 재귀
  • -p 또는 / P : 경로
  • -m 또는 / M : 파일 마스크
  • -d 또는 / D : 일 수 (-180 = 180 일 이상)
  • -c 또는 / C : 실행할 명령

실행 가능한 Powershell 대안을 찾고 있다면 이 다른 답변을 참조하십시오 . IIS LogFiles 폴더를 올바르게 줄이는 방법에 대한 다른 제안은 이 게시물을 확인하십시오 .


2

글쎄, 정기적으로 정리하고 싶다면 IIS에서 요청 로깅을 비활성화하지 않는 이유는 무엇입니까? 당신은 구글 분석이나 다른 서비스와 같은 것을 사용할 수 있습니다. 저는 많은 사람들이 성능에 영향을 미치고 모든 디스크 공간을 차지하는 IIS 로그의 두통을 피하기 위해 이것을 동경하는 것을 보았습니다. 그러나 그것은 모두 귀하의 요구 사항에 달려 있습니다.


1

Microsoft는 웹 사이트에 스크립트를 제안 합니다 .

아래는 내가 필요로하는 수정 된 버전입니다.

Wscript.Echo "Starting log removal"
sLogFolder = "d:\retentiontest"

iMaxAge = 30   'in days
Set objFSO = CreateObject("Scripting.FileSystemObject")
set colFolder = objFSO.GetFolder(sLogFolder)
Wscript.Echo "Removing log files from folder: " & colFolder

For Each colSubfolder in colFolder.SubFolders
        Set objFolder = objFSO.GetFolder(colSubfolder.Path)
        Set colFiles = objFolder.Files
        For Each objFile in colFiles
                iFileAge = now-objFile.DateLastModified
                if iFileAge > (iMaxAge+1)  then
                        Wscript.Echo "Removing File: " & objFile.Name
                        objFSO.deletefile objFile, True

                end if
        Next
Next

반 직관적으로 작성된 날짜는 복사 된 파일의 경우와 마찬가지로 마지막으로 수정 된 날짜보다 늦을 수 있으므로 "DateCreated"에서 "DateLastModified"로 변경되었습니다. 최근에 업데이트 된 파일을 제거하고 싶지 않을 수 있습니다.

그런 다음 cscript.exe를 사용하여 실행하십시오 (예 :) cscript.exe d:\scripts\logRetentionScript.vbs.


0

서버에서 예약 된 작업을 만듭니다. 작업 섹션에서 다음을 원합니다.

  • 작업 : 프로그램 시작
  • 설정 : Program = Forfiles
  • 인수 추가 : -p "C : \ inetpub \ logs \ LogFiles"-s -m . / D -45 / C "cmd / c del @path"
  • 시작 : C : \

매일 또는 매주 일정을 정하십시오. 끝난.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.