로그를 회전하도록 IIS를 어떻게 설정합니까?


21

몇 년 동안 Apache를 사용해 왔으며 로그 회전을 처리한다는 점은 당연한 일입니다. IIS 구성 및 인터넷 검색을 살펴 봤지만 IIS에서 로그 회전을 설정하는 옵션을 찾을 수 없습니다.

특정 임계 값을 지난 로그를 삭제하도록 IIS를 구성하는 기본 방법은 무엇입니까? 이를위한 제품이 있습니까? 진취적인 Windows 상점은 무엇을합니까?

구성 : IIS 6.0 / Windows Server 2003 32 비트


아주 좋은 질문입니다. IIS에는 회전이 있지만 제거 또는 보관 처리는하지 않습니다. 왜 다른 영역에서 성숙 된 제품에 이러한 기본 기능이 없는지 이해할 수 없습니다. 기본 구성을 사용하면 IIS는 루트 드라이브를 로그로 채워 자살합니다. (SQL과 트랜잭션 로그에 대해서도 마찬가지라고 생각합니다.)
Nathan Hartley

답변:


11

로그 회전 또는 보관을 처리하기위한 메커니즘이 내장되어 있지 않습니다. 이 작업을 처리하는 타사 제품이 있거나 스크립트를 작성하고 예약 된 작업을 구성 할 수 있습니다. 소수의 IIS 서버 만 있으므로 Outlook에서 반복 작업을 설정하여 30 일이 지난 IIS 로그 파일을 매월마다 삭제하도록 상기시켜줍니다.


5
고통 스럽네요 이것을 예약하십시오 ... Get-ChildItem E : \ log * -ex * .log 포함 -Recurse | Where-Object {$ _. LastWriteTime -lt (Get-Date) .AddDays (-30)} | Remove-Item
Nathan Hartley


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
이 기능은 로그 파일을 삭제한다고 생각하지 않으며 새 로그 파일 작성 기간 (예 : 매일, 매시간 등) 만 지정합니다. 링크 한 문서는 "현재 로그 파일을 얼마나 자주 닫고 닫는지를 지정합니다. 새 로그 파일이 시작되었습니다. " 삭제에 대한 언급은 없습니다.
Somantra

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.