몇 년 동안 Apache를 사용해 왔으며 로그 회전을 처리한다는 점은 당연한 일입니다. IIS 구성 및 인터넷 검색을 살펴 봤지만 IIS에서 로그 회전을 설정하는 옵션을 찾을 수 없습니다.
특정 임계 값을 지난 로그를 삭제하도록 IIS를 구성하는 기본 방법은 무엇입니까? 이를위한 제품이 있습니까? 진취적인 Windows 상점은 무엇을합니까?
구성 : IIS 6.0 / Windows Server 2003 32 비트
몇 년 동안 Apache를 사용해 왔으며 로그 회전을 처리한다는 점은 당연한 일입니다. IIS 구성 및 인터넷 검색을 살펴 봤지만 IIS에서 로그 회전을 설정하는 옵션을 찾을 수 없습니다.
특정 임계 값을 지난 로그를 삭제하도록 IIS를 구성하는 기본 방법은 무엇입니까? 이를위한 제품이 있습니까? 진취적인 Windows 상점은 무엇을합니까?
구성 : IIS 6.0 / Windows Server 2003 32 비트
답변:
로그 회전 또는 보관을 처리하기위한 메커니즘이 내장되어 있지 않습니다. 이 작업을 처리하는 타사 제품이 있거나 스크립트를 작성하고 예약 된 작업을 구성 할 수 있습니다. 소수의 IIS 서버 만 있으므로 Outlook에서 반복 작업을 설정하여 30 일이 지난 IIS 로그 파일을 매월마다 삭제하도록 상기시켜줍니다.
확인 : http://www.808.dk/?code-iis-log-housekeeping
예약 된 작업 = logrotation :)에 추가 할 수있는 많은 스크립트가 제공됩니다.
IIS 로그 도구 ( http://www.iislogs.com/ )를 살펴보십시오 . 이를 설치하는 몇 가지 방법이 있으며 IIS 및 기타 로그 파일을 관리하는 데 매우 효과적인 작업을 수행합니다 (파일을 .zip 형식으로 압축, 다른 위치로 이동, 특정 날짜 이후의 파일 삭제 등).
최근에 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
IIS 7에는 주기적으로 로그 파일을 삭제하는 구성이 도입되었습니다. 자세한 내용 period
은 다음 링크 를 참조하십시오 .
http://www.iis.net/configreference/system.applicationhost/log/centralbinarylogfile
http://www.iis.net/configreference/system.applicationhost/log/centralw3clogfile