방금 IIS가 로그를 무기한으로 빌드하고 오래된 로그 파일을 자동으로 정리하는 IIS 설정이없는 것으로 나타났습니다. IIS 로그를 제어하여 전체 하드 드라이브를 채우지 않는 가장 좋은 방법은 무엇입니까?
답변
예약 된 작업을 실행해야합니다. 다음은 작동해야하는 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 객체의 다른 속성을 보여주는 이 기사 를 살펴볼 수 있습니다 .
답변
당신은 당신의 자신을 양조 할 수 있지만, 나는 영리한 사람이 이미 당신을 위해 이것을 썼다고 생각합니다. IISLogs 및 IISLogs Lite를 확인하십시오 !
모든 작업이 로그를 삭제하는 것이라면 필요하지 않은 경우 로깅을 해제 할 수 있습니다! 서버에 많은 I / O를 저장합니다!
답변
현재 매우 간단한 배치 파일 스크립트를 사용 하여이 작업을 수행하고 있습니다.
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 폴더를 올바르게 줄이는 방법에 대한 다른 제안은 이 게시물을 확인하십시오 .
답변
글쎄, 정기적으로 정리하고 싶다면 IIS에서 요청 로깅을 비활성화하지 않는 이유는 무엇입니까? 당신은 구글 분석이나 다른 서비스와 같은 것을 사용할 수 있습니다. 저는 많은 사람들이 성능에 영향을 미치고 모든 디스크 공간을 차지하는 IIS 로그의 두통을 피하기 위해 이것을 동경하는 것을 보았습니다. 그러나 그것은 모두 귀하의 요구 사항에 달려 있습니다.
답변
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
.
답변
서버에서 예약 된 작업을 만듭니다. 작업 섹션에서 다음을 원합니다.
- 작업 : 프로그램 시작
- 설정 : Program = Forfiles
- 인수 추가 : -p “C : \ inetpub \ logs \ LogFiles”-s -m . / D -45 / C “cmd / c del @path”
- 시작 : C : \
매일 또는 매주 일정을 정하십시오. 끝난.