我已经使用Apache多年了,我认为它可以为我处理日志轮换是理所当然的。我一直在研究IIS配置并进行谷歌搜索,但是我找不到IIS打开日志循环的选项。
配置IIS以删除超过特定阈值的日志的首选方法是什么?有没有适合您的产品?企业Windows商店做什么?
配置:IIS 6.0 / Windows Server 2003 32位
我已经使用Apache多年了,我认为它可以为我处理日志轮换是理所当然的。我一直在研究IIS配置并进行谷歌搜索,但是我找不到IIS打开日志循环的选项。
配置IIS以删除超过特定阈值的日志的首选方法是什么?有没有适合您的产品?企业Windows商店做什么?
配置:IIS 6.0 / Windows Server 2003 32位
Answers:
没有内置的机制来处理日志旋转或归档。可能会有第三方产品来处理此杂务,或者您可以编写一些脚本并配置计划的任务。我只有少数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
您可以使用计划任务和批处理文件来执行此操作。
forfiles -p "C:\Path\To\Log\Files" -m *.* /D -30 /C "cmd /c del @path"