ログをローテーションするようにIISをセットアップするにはどうすればよいですか?


21

私は長年Apacheを使用してきましたが、Apacheがログのローテーションを処理することは当然だと思っていました。IISの設定を掘り下げてグーグルで調べましたが、ログのローテーションを有効にするためのIISのオプションが見つかりません。

特定のしきい値を超えてログを削除するようにIISを構成する好ましい方法は何ですか?あなたのためにこれを行う製品はありますか?エンタープライズWindowsショップは何をしますか?

構成:IIS 6.0 / Windows Server 2003 32ビット


とてもいい質問です。IISにはローテーションがありますが、パージもアーカイブも処理しません。他の分野で成熟している製品に、このような基本的な機能が欠けている理由はわかりません。既定の構成では、IISはルートドライブをログでいっぱいにして自殺します。(SQLとそのトランザクションログについても同じことが言えると思います。)
ネイサンハートリー14年

回答:


11

ログのローテーションまたはアーカイブを処理する組み込みのメカニズムはありません。この雑用を処理するサードパーティ製品があるか、何かスクリプトを作成してスケジュールされたタスクを構成できます。IISサーバーはほんの一握りしかないので、30日以上経過したIISログファイルを削除するように毎月通知するようにOutlookで繰り返しタスクを設定しました。


5
痛いですね。これをスケジュールしてみてください... Get-ChildItem E:\ log * -Include ex * .log -Recurse | Where-Object {$ _。LastWriteTime -lt(Get-Date).AddDays(-30)} | 削除項目
ネイサンハートリー14年


5

IISログツール(http://www.iislogs.com/)をご覧ください。これをインストールする方法はいくつかあり、IISおよびその他のログファイルの管理に非常に効果的な仕事をします(ファイルを.zip形式に圧縮する、別の場所に移動する、特定の日付を過ぎたファイルを削除するなど)。


1

robocopyを使用して「old」という名前のサブディレクトリにファイルをコピーするようにスケジュールされたタスクを設定します。このスイッチには、/ minage: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
この機能はログファイルを削除するとは思わず、新しいログファイルの作成期間、つまり毎日、毎時などを指定するだけです。リンクしたドキュメントでは、「現在のログファイルを閉じる頻度と新しいログファイルが開始されます。」削除に関する言及はありません。
ソマントラ

0

スケジュールされたタスクとバッチファイルを使用してこれを行うことができます。

forfiles -p "C:\Path\To\Log\Files" -m *.* /D -30 /C "cmd /c del @path"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.