Como posso manter os arquivos de log do IIS limpos regularmente?

20

Acabei de descobrir que o IIS cria logs indefinidamente e não parece haver nenhuma configuração do IIS que limpe automaticamente automaticamente os arquivos de log antigos. Qual é a melhor maneira de manter meus logs do IIS sob controle para que eles não preencham todo o disco rígido?

Luke
fonte
Deseja manter os antigos em um arquivo zip ou excluí-los?
9139 Jeff Atwood
Você deve gerenciar os arquivos de log você mesmo.
Evan Anderson
O CCLeaner tem uma opção para limpar os arquivos de log do IIS !!!

Respostas:

22

Você precisará executar uma tarefa agendada para fazê-lo. Aqui está um script do Powershell que deve funcionar.

set-location c:\windows\system32\Logfiles\W3SVC1\ -ErrorAction Stop
foreach ($File in get-childitem -include *.log) {
   if ($File.LastWriteTime -lt (Get-Date).AddDays(-30)) {
      del $File
   }
}

Isso deve limpar tudo que foi modificado pela última vez há mais de 30 dias. Altere o caminho na primeira linha para onde quer que seus arquivos de log estejam armazenados. Altere também -30 para o tempo que desejar manter os arquivos. -30 significa que você excluirá qualquer coisa com mais de 30 dias.

Você pode dar uma olhada neste artigo que mostra propriedades diferentes para o objeto FileInfo se você não quiser usar LastWriteTime.

squillman
fonte
11
No Windows Server 2008 R2 (PS 2.0) eu tive que modificar a-ChildItem Get chamado a serGet-ChildItem *.* -include *.log
roryWoods
4

Você poderia preparar o seu próprio, mas acredito que uma pessoa inteligente já escreveu isso para você. Confira IISLogs e IISLogs Lite!

Se tudo o que você faz é excluir os logs, você pode desativar o log se não for necessário! você economizará bastante servidor de E / S!

Nick Kavadias
fonte
11
Apenas uma atualização, mas o IISLogs Lite não está disponível há algum tempo e o IISLogs não é barato.
Bacon Bits
3

Atualmente, estou fazendo isso usando um script de arquivo em lote muito simples:

forfiles -p C:\inetpub\logs\LogFiles\ -s -m *.log -d -180 -c "cmd /C DEL @File"

Também fiz uma entrada de Tarefa agendada para iniciá-la diariamente e até ativei o recurso de compactação de arquivos nessa pasta: todas essas coisas juntas corrigiram meu problema com os arquivos do IIS para sempre.

Explicação das opções no arquivo em lotes:

  • -s ou / S: recursiva em todas as subpastas
  • -p ou / P: caminho
  • -m ou / M: máscara de arquivo
  • -d ou / D: número de dias (-180 = mais de 180 dias)
  • -c ou / C: comando para executar

Se você estiver procurando por uma alternativa viável do PowerShell , consulte esta outra resposta : para obter outras sugestões sobre como reduzir corretamente a pasta Arquivos de log do IIS, confira esta postagem .

Darkseal
fonte
2

Bem, se você deseja limpá-los regularmente, por que não desabilita o log de solicitações no IIS? Você pode usar algo como o google analytics ou algum outro serviço. Vejo muitas pessoas para evitar a dor de cabeça com os logs do IIS afetando o desempenho e consumindo todo o espaço em disco, mas tudo depende dos seus requisitos, é claro.

Mee
fonte
1

A Microsoft sugere um script em seu site .

Abaixo está uma versão modificada que estou usando para minhas necessidades.

Wscript.Echo "Starting log removal"
sLogFolder = "d:\retentiontest"

iMaxAge = 30   'in days
Set objFSO = CreateObject("Scripting.FileSystemObject")
set colFolder = objFSO.GetFolder(sLogFolder)
Wscript.Echo "Removing log files from folder: " & colFolder

For Each colSubfolder in colFolder.SubFolders
        Set objFolder = objFSO.GetFolder(colSubfolder.Path)
        Set colFiles = objFolder.Files
        For Each objFile in colFiles
                iFileAge = now-objFile.DateLastModified
                if iFileAge > (iMaxAge+1)  then
                        Wscript.Echo "Removing File: " & objFile.Name
                        objFSO.deletefile objFile, True

                end if
        Next
Next

Observe que eu mudei de "DateCreated" para "DateLastModified", pois a data criada contra-intuitivamente pode ser posterior à última modificação, como pode ser o caso dos arquivos copiados. Você provavelmente não deseja remover arquivos que foram atualizados recentemente.

Em seguida, execute-o usando cscript.exe (por exemplo cscript.exe d:\scripts\logRetentionScript.vbs).

Zamicol
fonte
0

Crie uma tarefa agendada no servidor. Na seção de ações, você deseja:

  • Ação: Iniciar um Programa
  • Configurações: Program = Forfiles
  • Adicione argumentos: -p "C: \ inetpub \ logs \ LogFiles" -s -m . / D -45 / C "cmd / c del @caminho"
  • Iniciar em: C: \

Dê um horário diário ou semanal. Feito.

Corbett Enders
fonte