Frage Wie richte ich IIS ein, um Protokolle zu rotieren?


Ich benutze Apache seit Jahren und ich nehme an, dass es die Log-Rotation für mich handhabt. Ich habe durch die IIS-Konfiguration und googlen gegraben, aber ich kann keine Option für IIS finden, um die Protokollrotation einzuschalten.

Wie wird IIS am besten so konfiguriert, dass Protokolle nach einem bestimmten Schwellenwert gelöscht werden? Gibt es Produkte, die das für Sie tun? Was machen Windows-Shops?

Konfiguration: IIS 6.0 / Windows Server 2003 32-Bit


19
2017-09-26 22:12


Ursprung


Eine sehr gute Frage. IIS verfügt zwar über eine Rotation, kann jedoch weder bereinigt noch archiviert werden. Ich verstehe nicht, warum einem Produkt, das in anderen Bereichen so ausgereift ist, ein solches Grundmerkmal fehlen würde. Bei der Standardkonfiguration begeht IIS Selbstmord, indem das Root-Laufwerk mit Protokollen gefüllt wird. (Ich denke, das gleiche kann für SQL und seine Transaktionsprotokolle gesagt werden.) - Nathan Hartley


Antworten:


Es gibt keinen integrierten Mechanismus für die Protokollrotation oder -archivierung. Es kann Produkte von Drittanbietern geben, um diese Aufgabe zu bearbeiten, oder Sie können etwas skripten und eine geplante Aufgabe konfigurieren. Ich habe nur eine handvoll von IIS-Servern, so dass ich nur eine wiederkehrende Aufgabe in Outlook einrichten, um mich monatlich daran zu erinnern, IIS-Protokolldateien zu löschen, die älter als 30 Tage sind.


10
2017-09-26 23:00



Das klingt schmerzhaft. Versuche dies zu planen ... Get-ChildItem E: \ log * -Include ex * .log -Recurse | Where-Objekt {$ _. LastWriteTime -lt (Get-Date) .AddDays (-30)} | Gegenstand entfernen - Nathan Hartley


Prüfen: http://www.808.dk/?code-iis-log-housekeeping 

Eine Reihe von Skripten ist verfügbar, die Sie in der geplanten Aufgabe hinzufügen können = logrotation :)


6
2017-09-26 23:13





Sehen Sie sich das IIS Logs Tool an (http://www.iislogs.com/). Es gibt verschiedene Möglichkeiten, dies zu installieren und eine sehr effektive Arbeit bei der Verwaltung von IIS- und anderen Protokolldateien zu leisten (Komprimieren von Dateien im ZIP-Format, Verschieben an andere Speicherorte, Löschen von Dateien nach einem bestimmten Datum usw.).


5
2017-09-26 23:37





Richten Sie eine geplante Aufgabe ein, um Robocopy zu verwenden, um die Dateien in ein Unterverzeichnis mit dem Namen "alt" zu kopieren. Es hat einen Schalter, / minage: x, dass Sie auf 30,60 einstellen können, oder was auch immer Sie fühlen. Löschen Sie dann alles in diesem Verzeichnis. Ich mache es auf ein paar Dutzend Servern so, und es scheint der Trick zu sein.


1
2017-07-12 13:25





Die anderen Antworten sind gut und bieten eine robustere Lösung für dieses Problem. Wenn Sie nur eine schnelle Lösung benötigen, können Sie CCleaner so einrichten, dass der Protokollordner bei jeder Anmeldung oder nach einem Zeitplan automatisch gelöscht wird.

Beachten Sie jedoch, dass dies gelöscht wird alles Protokolle, nicht nur alternde Dateien.

ich folgte diese Anweisungen Aber ich fügte hinzu, dass ich wollte, dass es auch dann ausgeführt wird, wenn der Benutzer abgemeldet wurde, wie es normalerweise auf einem Server der Fall ist.


0
2018-01-26 18:00





Ich habe das vor kurzem gestellt dieselbe Frage zum Powershell.org-Forum. Dann habe ich einen Hack einer Skript-Ressource für die Konfiguration des gewünschten Status gepostet, den ich verwenden werde, um meine Notwendigkeit für eine Protokollbereinigungsroutine zu lösen. Vielleicht wird ein Teil dieses Codes für andere nützlich sein.

# 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
2018-03-10 19:28





IIS 7 führt eine Konfiguration ein, um Protokolldateien regelmäßig zu löschen. Weitere Informationen finden Sie unter period in den folgenden Links:

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

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


0
2017-09-15 17:55



Ich glaube nicht, dass diese Funktion Protokolldateien löscht, sie gibt nur den Zeitraum für die Erstellung einer neuen Protokolldatei an, dh täglich, stündlich usw. Das von Ihnen verlinkte Dokument definiert den Zeitraum als "Gibt an, wie häufig die aktuelle Protokolldatei geschlossen ist und Eine neue Protokolldatei wird gestartet. " Deletion wird nicht erwähnt. - Somantra


Sie könnten dies mit einer geplanten Aufgabe und einer Batch-Datei tun.

forfiles -p "C:\Path\To\Log\Files" -m *.* /D -30 /C "cmd /c del @path"

0
2018-03-01 19:56