Як я можу регулярно очищати файли журналів IIS?


20

Щойно я виявив, що IIS створює журнали на невизначений термін і, здається, не існує жодних налаштувань IIS, які автоматично очищать старі файли журналів. Який найкращий спосіб тримати мої журнали IIS під контролем, щоб вони не заповнювали весь жорсткий диск?


чи хочете ви зберегти старі навколо в zip-архіві чи видалити їх?
Джефф Етвуд

Очікується, що ви керуєте файлами журналу самостійно.
Еван Андерсон

У 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 днів.

Ви можете подивитися цю статтю, яка показує різні властивості для об'єкта FileInfo, якщо ви не хочете використовувати LastWriteTime.


1
У Windows Server 2008 R2 (PS 2.0) мені довелося змінити виклик Get-ChildItem, щоб бутиGet-ChildItem *.* -include *.log
roryWoods

4

Ви можете заварити свою, але я вважаю, що якась розумна людина вже написала це для вас. Перевірте IISLogs & IISLogs Lite!

Якщо все ваше завдання - це видалення журналів, ви можете вимкнути реєстрацію, якщо її не потрібно! ви збережете свій сервер багато вводу-виводу!


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 , дивіться цю іншу відповідь : для отримання інших пропозицій щодо правильного зменшення папки LogSles IIS перегляньте цю публікацію .


2

Що ж, якщо ви хочете регулярно їх очищати, то чому б вам не відключити реєстрацію запитів у IIS? Ви можете використовувати щось на зразок аналітики Google чи іншої послуги, я бачу, що багато людей роблять це, щоб уникнути головного болю з журналами 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

Зауважте, що я змінив "DateCreate" на "DateLastModified", оскільки дата, створена протизаконне, може бути пізнішою, ніж остання змінена, як це може бути у випадку з скопійованими файлами. Напевно, ви не хочете видаляти файли, які нещодавно оновились.

Потім запустіть його за допомогою cscript.exe (наприклад, cscript.exe d:\scripts\logRetentionScript.vbs).


0

Створіть планове завдання на сервері. У розділі дій потрібно:

  • Дія: запуск програми
  • Налаштування: Програма = Forfiles
  • Додати аргументи: -p "C: \ inetpub \ logs \ LogFiles" -s -m . / D -45 / C "cmd / c del @path"
  • Почніть з: C: \

Надайте йому щоденний або тижневий графік. Зроблено.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.