Windows 事件日志中超过 4 GB 的含义是什么?

lga*_*aud 13 windows-event-log windows-server-2008-r2 windows-server-2012 windows-server-2012-r2

我发现这个 Microsoft KB 涵盖了最高 Windows 2008/Vista 操作系统的推荐事件日志设置最大值,其中建议最大为 4GB,并且还看到了一些其他模糊的参考资料,即至少不建议使用大于 4 GB 的事件日志2008 R2,但我想知道如果事件日志超过这个大小,实际会发生什么?

我已经在测试服务器 (2012 R2) 上超过了这个并且没有注意到诸如高内存使用等的任何事情。我们不关心 2008 R2 之前的操作系统,但想要一个大日志,因为我们正在通过以下方式从许多机器收集事件Windows 事件转发并希望将所有事件集中在一处。

Hop*_*00b 10

除了糟糕的性能和荒谬的等待时间,当你必须加载 4 GB 的日志时,如果你不得不搜索这样一个可怕的东西,那就不是了。我认为我在我的环境中看到的最大的一个是 10 GB,虽然我放弃了等待它加载,但它似乎没有伤害任何东西。

Server 2008 的 4GB 警告是由于 4 GB 时经常遇到的 32 位限制。在 64 位系统上,让它增长到 16 TB(或 64 TB,视情况而定)应该没问题,但我不知道是否有人接近测试该限制。

当然,如果您还没有这样做,您会发现使用非常大的日志文件是不切实际的 - 上次我尝试加载一个简单的 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
Run Code Online (Sandbox Code Playgroud)

  • 对于任何记得 Windows 事件日志是内存映射文件并且 *整个* 日志已加载到内存中的人来说,该限制已[消除](https://technet.microsoft.com/en-us/library/cc722385(WS .10).aspx) 由 Windows Vista/Server 2008 中引入的新事件日志基础结构。但是,如果您仍在使用 Server 2003,则不能创建大小超过 1GB 的日志,因为在该操作系统中,没有进程可以超过总共 1 GB 的内存映射文件。 (6认同)