Làm cách nào để giữ các tệp nhật ký IIS được dọn sạch thường xuyên?


20

Tôi mới phát hiện ra rằng IIS xây dựng các bản ghi vô thời hạn và dường như không có bất kỳ cài đặt IIS nào sẽ tự động xóa các tệp nhật ký cũ. Cách tốt nhất để giữ các bản ghi IIS của tôi dưới sự kiểm soát để chúng không lấp đầy toàn bộ ổ cứng?


Bạn có muốn giữ những cái cũ xung quanh trong một kho lưu trữ zip, hoặc xóa chúng không?
Jeff Atwood

Bạn sẽ tự mình quản lý các tệp nhật ký.
Evan Anderson

CCLeaner có một tùy chọn để xóa tập tin nhật ký IIS !!!

Câu trả lời:


22

Bạn sẽ phải chạy một nhiệm vụ theo lịch trình để làm điều đó. Đây là một kịch bản Powershell nên hoạt động.

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
   }
}

Điều này sẽ thanh lọc bất cứ thứ gì được sửa đổi lần cuối cách đây hơn 30 ngày. Thay đổi đường dẫn trong dòng đầu tiên thành bất cứ nơi nào tệp nhật ký của bạn được lưu trữ. Đồng thời thay đổi -30 thành bao lâu bạn muốn giữ lại các tệp. -30 có nghĩa là bạn sẽ xóa mọi thứ cũ hơn 30 ngày.

Bạn có thể xem bài viết này hiển thị các thuộc tính khác nhau cho đối tượng FileInfo nếu bạn không muốn sử dụng LastWriteTime.


1
Trên Windows Server 2008 R2 (PS 2.0) tôi đã phải sửa đổi lệnh gọi Get-ChildItem thànhGet-ChildItem *.* -include *.log
roryWoods

4

Bạn có thể tự pha chế, nhưng tôi tin rằng một số người thông minh đã viết điều này cho bạn rồi. Hãy xem IISLogs & IISLogs Lite!

Nếu tất cả những gì bạn làm là xóa nhật ký, thì bạn có thể tắt đăng nhập nếu không cần thiết! bạn sẽ lưu máy chủ của mình rất nhiều I / O!


1
Chỉ là một bản cập nhật, nhưng IISLogs Lite đã không có sẵn trong một thời gian và IISLogs không rẻ.
Bacon Bits

3

Tôi hiện đang làm điều này bằng cách sử dụng tập lệnh bó rất đơn giản:

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

Tôi cũng đã thực hiện một mục Tác vụ theo lịch để khởi chạy nó hàng ngày và thậm chí kích hoạt tính năng nén tệp trên thư mục đó: tất cả những điều này cùng nhau khắc phục sự cố của tôi với các tệp IIS là tốt.

Giải thích về các công tắc trong tệp bó:

  • -s hoặc / S: lặp lại vào tất cả các thư mục con
  • -p hoặc / P: đường dẫn
  • -m hoặc / M: tập tin mặt nạ
  • -d hoặc / D: số ngày (-180 = cũ hơn 180 ngày)
  • Lệnh -c hoặc / C: để thực thi

Nếu bạn đang tìm kiếm một giải pháp thay thế Powershell khả thi , hãy xem câu trả lời khác này : để biết các đề xuất khác về cách giảm đúng thư mục IIS LogFiles, hãy xem bài đăng này .


2

Chà, nếu bạn muốn dọn dẹp chúng thường xuyên thì tại sao bạn không tắt yêu cầu đăng nhập vào IIS? Bạn có thể sử dụng một cái gì đó như phân tích google hoặc một số dịch vụ khác, tôi thấy nhiều người đồng ý điều này để tránh đau đầu với các bản ghi IIS ảnh hưởng đến hiệu suất và ăn hết dung lượng đĩa nhưng tất cả phụ thuộc vào yêu cầu của bạn.


1

Microsoft đề xuất một tập lệnh trên trang web của nó .

Dưới đây là phiên bản sửa đổi tôi đang sử dụng cho nhu cầu của mình.

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

Lưu ý rằng tôi đã thay đổi từ "DateCreated" thành "DateLastModified" kể từ ngày được tạo ra một cách trái ngược có thể muộn hơn lần sửa đổi cuối cùng, như trường hợp với các tệp được sao chép. Bạn có thể không muốn xóa các tệp đã được cập nhật gần đây.

Sau đó chạy nó bằng cscript.exe (ví dụ cscript.exe d:\scripts\logRetentionScript.vbs:).


0

Tạo một tác vụ theo lịch trình trên máy chủ. Trong phần hành động, bạn muốn:

  • Hành động: Bắt đầu một chương trình
  • Cài đặt: Chương trình = Forfiles
  • Thêm đối số: -p "C: \ inetpub \ log \ LogFiles" -s -m . / D -45 / C "cmd / c del @path"
  • Bắt đầu bằng: C: \

Cung cấp cho nó một lịch trình hàng ngày hoặc hàng tuần. Làm xong.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.