मुझे अभी पता चला है कि IIS अनिश्चित काल तक लॉग बनाता है और कोई भी IIS सेटिंग नहीं दिखाई देती है जो पुराने लॉग फ़ाइलों को स्वचालित रूप से साफ़ कर देगी। मेरे IIS लॉग को नियंत्रण में रखने का सबसे अच्छा तरीका क्या है ताकि वे पूरी हार्ड ड्राइव को न भरें?
मुझे अभी पता चला है कि IIS अनिश्चित काल तक लॉग बनाता है और कोई भी IIS सेटिंग नहीं दिखाई देती है जो पुराने लॉग फ़ाइलों को स्वचालित रूप से साफ़ कर देगी। मेरे IIS लॉग को नियंत्रण में रखने का सबसे अच्छा तरीका क्या है ताकि वे पूरी हार्ड ड्राइव को न भरें?
जवाबों:
आपको इसे करने के लिए एक निर्धारित कार्य चलाना होगा। यहां एक पावर्सल स्क्रिप्ट है जिसे काम करना चाहिए।
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 ऑब्जेक्ट के लिए अलग-अलग गुण दिखाता है।
Get-ChildItem *.* -include *.log
आप अपनी खुद की शराब बना सकते हैं, लेकिन मेरा मानना है कि किसी चतुर व्यक्ति ने आपके लिए यह पहले ही लिख दिया है। की जाँच करें IISLogs और IISLogs लाइट!
यदि आपके सभी कार्य लॉग को हटा रहे हैं, तो आप लॉगिंग को बंद कर सकते हैं यदि इसकी आवश्यकता नहीं है! आप अपने सर्वर को बहुत अधिक I / O बचा लेंगे!
मैं वर्तमान में एक बहुत ही सरल बैच फ़ाइल स्क्रिप्ट का उपयोग कर रहा हूँ:
forfiles -p C:\inetpub\logs\LogFiles\ -s -m *.log -d -180 -c "cmd /C DEL @File"
मैंने इसे दैनिक रूप से लॉन्च करने के लिए एक शेड्यूल्ड टास्क एंट्री भी की और उस फोल्डर पर फाइल कम्प्रेशन फीचर को भी सक्रिय कर दिया: इन सभी चीजों ने मिलकर मेरी समस्या को अच्छे के लिए IIS फाइलों के साथ ठीक कर दिया।
बैच फ़ाइल में स्विच की व्याख्या:
यदि आप एक व्यवहार्य पॉवर्सशेल विकल्प की तलाश में हैं, तो यह अन्य उत्तर देखें : IIS लॉगफ़ाइल्स फ़ोल्डर को ठीक से कैसे कम करें, इस सुझाव के अन्य सुझावों के लिए, इस पोस्ट को देखें ।
ठीक है, अगर आप उन्हें नियमित रूप से साफ करना चाहते हैं तो आप 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
) का उपयोग करके चलाएं ।
सर्वर पर एक निर्धारित कार्य बनाएँ। क्रिया अनुभाग में, आप चाहते हैं:
इसे दैनिक या साप्ताहिक अनुसूची दें। किया हुआ।