IIS günlük dosyalarının düzenli olarak temizlenmesini nasıl sağlayabilirim?


20

IIS'nin günlükleri süresiz olarak oluşturduğunu ve eski günlük dosyalarını otomatik olarak temizleyecek herhangi bir IIS ayarı görünmediğini keşfettim. Tüm sabit sürücüyü doldurmamak için IIS günlüklerimi kontrol altında tutmanın en iyi yolu nedir?


eskilerini zip arşivinde tutmak mı yoksa silmek mi istersiniz?
Jeff Atwood

Günlük dosyalarını kendiniz yönetmeniz beklenir.
Evan Anderson

CCLeaner, IIS Günlük Dosyalarını temizleme seçeneğine sahiptir !!!

Yanıtlar:


22

Bunu yapmak için zamanlanmış bir görev çalıştırmanız gerekir. İşte çalışması gereken bir Powershell betiği.

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

Bu, en son 30 gün önce değiştirilmiş olan her şeyi temizlemelidir. İlk satırdaki yolu günlük dosyalarınızın depolandığı yere değiştirin. Ayrıca -30'u dosyaları saklamak istediğiniz kadar uzun olarak değiştirin. -30, 30 günden daha eski bir şeyi sileceğiniz anlamına gelir.

LastWriteTime kullanmak istemiyorsanız, FileInfo nesnesi için farklı özellikler gösteren bu makaleye göz atabilirsiniz.


1
Windows Server 2008 R2'de (PS 2.0) Get-ChildItem çağrısını değiştirmek zorunda kaldımGet-ChildItem *.* -include *.log
roryWoods

4

Kendinizi hazırlayabilirsiniz, ancak bazı akıllı kişilerin bunu sizin için zaten yazdığına inanıyorum. IISLogs ve IISLogs Lite'a göz atın !

Tüm yaptıklarınız günlükleri siliyorsa, gerekli değilse günlük kaydını kapatabilirsiniz! Sunucunuzu bir çok G / Ç kaydedeceksiniz!


1
Sadece bir güncelleme, ancak IISLogs Lite bir süredir mevcut değil ve IISLogs ucuz değil .
Bacon Bits

3

Şu anda bunu çok basit bir toplu iş dosyası komut dosyası kullanarak yapıyorum:

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

Ayrıca günlük olarak başlatmak için bir Zamanlanmış Görev girişi yaptım ve hatta bu klasördeki dosya sıkıştırma özelliğini etkinleştirdim: tüm bunlar birlikte IIS dosyalarıyla ilgili sorunumu düzeltti.

Toplu iş dosyasındaki anahtarların açıklaması:

  • -s veya / S: tüm alt klasörlere geri alma
  • -p veya / P: yol
  • -m veya / M: dosya maskesi
  • -d veya / D: gün sayısı (-180 = 180 günden daha eski)
  • -c veya / C: yürütme komutu

Geçerli bir Powershell alternatifi arıyorsanız , şu diğer yanıta bakın : IIS LogFiles klasörünün düzgün bir şekilde nasıl azaltılacağı ile ilgili diğer öneriler için bu gönderiye göz atın .


2

Peki, düzenli olarak temizlemek istiyorsanız, neden IIS'de istek günlüğünü devre dışı bırakmıyorsunuz? Google analytics veya başka bir hizmet gibi bir şey kullanabilirsiniz, performansı etkileyen ve tüm disk alanını yiyen IIS günlükleri ile baş ağrısını önlemek için birçok insan bunu dong görüyorum, ancak hepsi elbette gereksinimlerinize bağlı.


1

Microsoft, web sitesinde bir komut dosyası önerir .

Aşağıda, ihtiyaçlarım için kullandığım değiştirilmiş bir sürüm var.

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

Mantıksız olarak oluşturulan tarih, kopyalanan dosyalarda olduğu gibi son değiştirilenden daha geç bir tarih olabileceğinden, "DateCreated" değerinden "DateLastModified" olarak değiştirdiğimi unutmayın. Muhtemelen yakın zamanda güncellenen dosyaları kaldırmak istemezsiniz.

Sonra cscript.exe (örneğin cscript.exe d:\scripts\logRetentionScript.vbs) kullanarak çalıştırın .


0

Sunucuda zamanlanmış bir görev oluşturun. İşlemler bölümünde şunları yapabilirsiniz:

  • Eylem: bir program başlatmak
  • Ayarlar: Program = Dosya
  • Bağımsız Değişken Ekle: -p "C: \ inetpub \ logs \ LogFiles" -s -m . / D -45 / C "cmd / c del @yol"
  • Başlangıç ​​noktası: C: ​​\

Günlük veya haftalık bir program verin. Bitti.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.