Além do desempenho horrível e tempos de espera ridículos quando você tem que carregar um log de 4 GB e o inferno será se você já tem que procurar através de uma coisa tão monstruosa, não muito. Eu acho que o maior que eu vi em meus ambientes foi de 10 GB, e embora eu tenha desistido de esperar para carregar, não pareceu prejudicar nada.
O aviso de 4 GB para o Servidor 2008 deve-se ao limite de 32 bits frequentemente encontrado em 4 GB. Em um sistema de 64 bits, você deve estar bem para deixá-lo crescer até 16 TB (ou 64, dependendo), embora eu não saiba que alguém chegou perto de testar esse limite.
É claro que, se você ainda não tiver feito isso, descobrirá que arquivos de log muito grandes são simplesmente impraticáveis de usar - a última vez que tentei carregar um simples arquivo de log de 100 GB (texto), ele não ser aberto sem travar o aplicativo de abertura, e eu suspeito que você vai bater esse problema bem antes de 100 GB.
A melhor abordagem é limitar o tamanho do arquivo a algo razoável e usar um script para apagá-lo de tempos em tempos. Eu uso o abaixo no meu ambiente, combinado com um limite de tamanho de 1 GB em nosso log de segurança. Alguns (bem, a maioria) de nossos servidores geram mais de 3 GB de eventos de segurança por dia, e não queremos desperdiçar todo esse espaço em arquivos de log enormes que eu fecho antes de vasculhar, então meu script copia o conteúdo do log para outra pasta e, em seguida, limpa o log de eventos para ser gravado novamente. E como a pasta para a qual eu copio é salva, sempre podemos voltar aos logs no horrível evento que precisamos.
#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