मैं लॉग को घुमाने के लिए IIS कैसे सेटअप करूं?


21

मैंने अपाचे का उपयोग वर्षों से किया है और मैंने यह मान लिया है कि यह मेरे लिए लॉग रोटेशन को संभालता है। मैं IIS कॉन्फिगर और googling के माध्यम से खुदाई कर रहा हूं, लेकिन मुझे IIS के लिए लॉग रोटेशन को चालू करने का विकल्प नहीं मिल रहा है।

एक निश्चित सीमा से पहले लॉग को हटाने के लिए IIS को कॉन्फ़िगर करने का पसंदीदा तरीका क्या है? क्या कोई उत्पाद हैं जो आपके लिए ऐसा करते हैं? Enterprisy Windows दुकानें क्या करती हैं?

कॉन्फ़िगरेशन: IIS 6.0 / Windows सर्वर 2003 32-बिट


एक बहुत अच्छा सवाल। IIS में रोटेशन होता है, लेकिन न तो पर्सिंग को संभालता है, न ही आर्काइविंग को। मुझे समझ में नहीं आता है कि एक उत्पाद, अन्य क्षेत्रों में इतना परिपक्व क्यों है, इस तरह की बुनियादी सुविधा गायब होगी। डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ, IIS रूट को लॉग से भरकर आत्महत्या कर लेता है। (मुझे लगता है कि एसक्यूएल और उसके लेनदेन लॉग के लिए वही कहा जा सकता है।)
नाथन हार्टले

जवाबों:


11

लॉग रोटेशन या संग्रहण को संभालने के लिए कोई तंत्र नहीं है। इस कोर को संभालने के लिए तीसरे पक्ष के उत्पाद हो सकते हैं या आप कुछ स्क्रिप्ट कर सकते हैं और एक निर्धारित कार्य को कॉन्फ़िगर कर सकते हैं। मेरे पास केवल IIS सर्वरों की एक हैंडफुल है इसलिए मैं सिर्फ 30 दिनों से पुराने IIS लॉग फ़ाइलों को हटाने के लिए मुझे मासिक याद दिलाने के लिए आउटलुक में एक आवर्ती टास्क सेट करता हूं।


5
जो दर्दनाक लगता है। इसे शेड्यूल करने का प्रयास करें ... Get-ChildItem E: \ log * -Include ex * .log -Recurse | जहाँ-जहाँ {$ _। LastWriteTime -lt (Get-Date) .AddDays (-30)} | निकालें-आइटम
नाथन हार्टले


5

IIS लॉग्स टूल ( http://www.iislogs.com/ ) पर एक नज़र डालें । इसे स्थापित करने के लिए कुछ अलग-अलग तरीके हैं और IIS और अन्य लॉग फ़ाइलों को प्रबंधित करने में बहुत प्रभावी काम करता है (फ़ाइलों को .zip प्रारूप में संपीड़ित करें, उन्हें अलग-अलग स्थानों पर ले जाएं, एक निश्चित तिथि से पहले फ़ाइलों को हटा दें)।


1

"पुराने" नामक उपनिर्देशिका में फ़ाइलों को कॉपी करने के लिए रोबोकॉपी का उपयोग करने के लिए एक निर्धारित कार्य सेट करें। इसमें एक स्विच, / मिनेज: x है जिसे आप 30,60 पर सेट कर सकते हैं, या जो भी आप महसूस करते हैं। फिर उस निर्देशिका में सब कुछ हटा दें। मैं इसे एक दर्जन सर्वरों पर इस तरह से कर रहा हूं, और लगता है कि यह चाल है।


0

अन्य उत्तर अच्छे हैं, और इस समस्या का अधिक मजबूत समाधान प्रस्तुत करते हैं। यदि आपको बस एक त्वरित सुधार की आवश्यकता है, तो आप अपने लॉग इन फ़ोल्डर को हर बार लॉगिन करने, या किसी शेड्यूल पर स्वचालित रूप से साफ करने के लिए CCleaner सेटअप कर सकते हैं।

हालांकि, ध्यान रखें कि यह सभी लॉग को हटा देता है , न कि केवल उम्र बढ़ने की फाइलें।

मैंने इन निर्देशों का पालन ​​किया, लेकिन यह भी जोड़ा कि मैं चाहता था कि जब उपयोगकर्ता लॉग ऑफ हो तब भी वह चला जाए, जैसा कि सर्वर पर सामान्य मामला है।


0

मैंने हाल ही में इस सवाल को Powershell.org फोरम पर डाला है । फिर वांछित स्टेट कॉन्फ़िगरेशन के लिए एक स्क्रिप्ट संसाधन की हैक पोस्ट करना समाप्त कर दिया, जिसका उपयोग मैं लॉग पर्जिंग रूटीन के लिए अपनी आवश्यकता को हल करने के लिए करूंगा। शायद इस कोड में से कुछ दूसरों के लिए उपयोगी होंगे।

# Requires an E: drive.

configuration LogDirectory
{
    param (
        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [string[]]$Node
    )
    node $Node
    {
        Script LogDirectoryScript
        {
            GetScript = {
                $result = (Test-Path 'E:\log') -and (schtasks.exe /query /TN Purge_Log_Folder | Select-String Purge_Log_Folder -Quiet)
                return @{
                    GetScript = $GetScript
                    SetScript = $SetScript
                    TestScript = $TestScript
                    Result = $result
                }
            }

            SetScript = {
                Write-Verbose 'Creating log directory.'
                if ( -not (Test-Path 'E:\log')) { 
                    New-Item -ItemType Directory -Path 'E:\log'
                }

                Write-Verbose 'Changing permissions to log directory such that any user can write, but only an administrator can read or modify.'
                $acl = (Get-Item 'E:\log').GetAccessControl('Access')
                $acl.AddAccessRule((New-Object System.Security.AccessControl.FileSystemAccessRule('Users','Write', 'Allow')))
                Set-Acl -Path 'E:\log' -AclObject $acl | Out-Host

                Write-Verbose 'Scheduling purge task.'
                $script = 'Get-ChildItem E:\log\* -Include ex*.log -Recurse  | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-7)} | Remove-Item'
                Set-Content -Path C:\Windows\Purge_Log_Folder.ps1 -Value $script
                $task = 'Powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File C:\Windows\Purge_Log_Folder.ps1'
                SCHTASKS /CREATE /TN Purge_Log_Folder /TR $task /SC DAILY /ST 23:59 /RU SYSTEM /F | Out-Host

                Write-Verbose 'Configuring IIS'
                # Default Log File Settings for Web Sites <logFile>
                # http://www.iis.net/configreference/system.applicationhost/sites/sitedefaults/logfile
                Import-Module WebAdministration
                Set-WebConfigurationProperty '/system.applicationHost/sites/siteDefaults' -name logFile -value @{
                    directory = 'E:\log'
                    localTimeRollover ='true'
                    period = 'Hourly'
                }
            }

            TestScript = {
                (Test-Path 'E:\log') -and (schtasks.exe /query /TN Purge_Log_Folder | Select-String Purge_Log_Folder -Quiet)
            }
        }
    }
} 
LogDirectory

0

IIS 7 लॉग फ़ाइलों को समय-समय पर हटाने के लिए कॉन्फ़िगरेशन का परिचय देता है। अधिक जानकारी के periodलिए निम्नलिखित लिंक देखें:

http://www.iis.net/configreference/system.applicationhost/log/centralbinarylogfile

http://www.iis.net/configreference/system.applicationhost/log/centralw3clogfile


1
मुझे नहीं लगता कि यह सुविधा लॉग फ़ाइलों को हटाती है, यह केवल एक नई लॉग फ़ाइल के निर्माण की अवधि को निर्दिष्ट करती है, अर्थात दैनिक, प्रति घंटा, आदि। जिस दस्तावेज़ को आपने लिंक किया है वह अवधि को "निर्दिष्ट करता है कि वर्तमान लॉग फ़ाइल कितनी बार बंद है और" एक नई लॉग फ़ाइल शुरू की गई है। " विलोपन का कोई उल्लेख नहीं है।
०६:३५ पर ra सोमन्त्र

0

आप इसे एक निर्धारित कार्य और एक बैच फ़ाइल के साथ कर सकते हैं।

forfiles -p "C:\Path\To\Log\Files" -m *.* /D -30 /C "cmd /c del @path"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.