I found this Microsoft KB that covers recommended Event Log setting maximums for operating systems up to Windows 2008/Vista,建议最大4GB,并且已经看到一些其他模糊的引用,至少在2008 R2中不推荐大于4 GB的事件日志,但是我想知道如果事件日志超过这个大小会发生什么?
我已经在测试服务器(2012 R2)上超过了这个并且没有注意到高内存使用率等等.我们不关心2008 R2之前的操作系统,但是想要一个大型日志,因为我们通过许多机器收集事件Windows事件转发并希望将所有事件放在一个地方.
除了糟糕的性能和荒谬的等待时间,你必须加载4 GB的日志,如果你不得不搜索这样一个可怕的东西,不会太多.我认为我在我的环境中看到的最大的一个是10 GB,虽然我放弃了等待它加载,但似乎没有任何伤害.
Server 2008的4GB警告是由于在4 GB时经常遇到的32位限制.在64位系统上,你应该可以让它增长到16 TB(或64,取决于),虽然我不知道有人接近测试这个限制.
当然,如果你还没有,你会发现非常大的日志文件使用起来很不切实际 – 我上次尝试加载一个简单的100 GB(文本)日志文件时,它甚至无法打开崩溃应用程序打开它,我怀疑你会在100 GB之前完成这个问题.
更好的方法是将文件大小限制在合理的范围内,并使用脚本不时清除它.我在我的环境中使用以下内容,并在安全日志中加上1 GB的大小限制.我们的一些(大多数)服务器每天生成超过3 GB的安全事件,我们不希望在梳理之前将所有空间浪费在我将要退出的大型日志文件上,因此我的脚本会将日志内容复制到另一个文件夹,然后清除要再次写入的事件日志.而且由于我将备份它们的文件夹备份,我们总是可以回到我们需要的可怕事件中的日志.
#Adapted from: http://blogs.technet.com/b/heyscriptingguy/archive/2009/04/08/how-can-i-check-the-size-of-my-event-log-and-then-backup-and-archive-it-if-it-is-more-than-half-full.aspx Param($logName = "security",$backupFolder = "C:\backupLogs") Function Get-EventLog([string]$logName) { $log = Get-WmiObject -Class Win32_NTEventLogFile -filter "LogFileName = '$logName'" If($log.FileSize / $log.MaxFileSize -ge .9) { "Log is at least 90% full. Backing up now." Backup-EventLog($log) } #end if Else { "Not backed up: $logName is only " + ($log.FileSize / $log.MaxFileSize).tostring("N2") + " percent full" } #end else } #end Get-EventLog Function Backup-EventLog($log) { $folder = Join-Path -Path $BackUpFolder -ChildPath (Get-Date).ToString("MMddyy_hhmm") If(-not(Test-Path $folder)) { New-Item -path $folder -itemtype Directory -force | out-Null } $rtn = $log.BackupEventLog("$folder\$logName.evt").ReturnValue If($rtn -eq 0) { $log.ClearEventLog() | out-null } #end if ELSE { "$logName could not be cleared. Backup ended with $($rtn)" } } #end Backup-EventLog # *** ENTRY POINT *** Get-EventLog -logname $logname