मैं नियमित रूप से IIS लॉग फ़ाइलों को कैसे साफ रख सकता हूं?


20

मुझे अभी पता चला है कि IIS अनिश्चित काल तक लॉग बनाता है और कोई भी IIS सेटिंग नहीं दिखाई देती है जो पुराने लॉग फ़ाइलों को स्वचालित रूप से साफ़ कर देगी। मेरे IIS लॉग को नियंत्रण में रखने का सबसे अच्छा तरीका क्या है ताकि वे पूरी हार्ड ड्राइव को न भरें?


क्या आप पुराने लोगों को ज़िप संग्रह में रखना चाहते हैं, या उन्हें हटाना चाहते हैं?
जेफ एटवुड

आपसे लॉग फ़ाइलों का प्रबंधन करने की अपेक्षा की जाती है।
इवान एंडरसन

CCLeaner में IIS लॉग फ़ाइलें साफ़ करने का विकल्प है !!!

जवाबों:


22

आपको इसे करने के लिए एक निर्धारित कार्य चलाना होगा। यहां एक पावर्सल स्क्रिप्ट है जिसे काम करना चाहिए।

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

आप अपनी खुद की शराब बना सकते हैं, लेकिन मेरा मानना ​​है कि किसी चतुर व्यक्ति ने आपके लिए यह पहले ही लिख दिया है। की जाँच करें IISLogs और IISLogs लाइट!

यदि आपके सभी कार्य लॉग को हटा रहे हैं, तो आप लॉगिंग को बंद कर सकते हैं यदि इसकी आवश्यकता नहीं है! आप अपने सर्वर को बहुत अधिक I / O बचा लेंगे!


1
बस एक अद्यतन, लेकिन IISLogs लाइट कुछ समय के लिए उपलब्ध नहीं है, और IISLogs सस्ता नहीं है।
बेकन बिट्स

3

मैं वर्तमान में एक बहुत ही सरल बैच फ़ाइल स्क्रिप्ट का उपयोग कर रहा हूँ:

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

मैंने इसे दैनिक रूप से लॉन्च करने के लिए एक शेड्यूल्ड टास्क एंट्री भी की और उस फोल्डर पर फाइल कम्प्रेशन फीचर को भी सक्रिय कर दिया: इन सभी चीजों ने मिलकर मेरी समस्या को अच्छे के लिए IIS फाइलों के साथ ठीक कर दिया।

बैच फ़ाइल में स्विच की व्याख्या:

  • -s या / S: सभी सबफ़ोल्डर्स में पुनरावृत्ति
  • -पी या / पी: पथ
  • -m या / M: फ़ाइल मास्क
  • -d या / D: दिनों की संख्या (-180 = 180 दिनों से अधिक पुरानी)
  • -c या / C: निष्पादित करने के लिए कमांड

यदि आप एक व्यवहार्य पॉवर्सशेल विकल्प की तलाश में हैं, तो यह अन्य उत्तर देखें : IIS लॉगफ़ाइल्स फ़ोल्डर को ठीक से कैसे कम करें, इस सुझाव के अन्य सुझावों के लिए, इस पोस्ट को देखें


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

सर्वर पर एक निर्धारित कार्य बनाएँ। क्रिया अनुभाग में, आप चाहते हैं:

  • क्रिया: एक कार्यक्रम शुरू करें
  • सेटिंग्स: प्रोग्राम = फॉरफाइल्स
  • तर्क जोड़ें: -p "C: \ inetpub \ log \ LogFiles" -s -m / डी -45 / सी "सीएमडी / सी डेल @पथ"
  • में शुरू: सी: \

इसे दैनिक या साप्ताहिक अनुसूची दें। किया हुआ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.