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 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?

    
por Luke 14.09.2009 / 23:28

6 respostas

22

Você terá que executar uma tarefa agendada para fazer isso. 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 eliminar tudo o que foi modificado pela última vez há mais de 30 dias. Altere o caminho na primeira linha para onde seus arquivos de log estiverem armazenados. Mude também o -30 para o tempo que desejar para reter os arquivos. -30 significa que você excluirá qualquer coisa com mais de 30 dias.

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

    
por 15.09.2009 / 00:09
4

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

Se tudo o que você está fazendo é apagar os logs, você pode desativar o log se não for necessário! você salvará seu servidor de I / O!

    
por 20.10.2009 / 16:09
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 Tarefa agendada para iniciá-la diariamente e até mesmo ativei o recurso de compactação de arquivos nessa pasta: tudo isso resolveu meu problema com os arquivos do IIS para sempre.

Explicação dos comutadores no arquivo de lote:

  • -s ou / S: recorre a 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ê está procurando uma alternativa viável Powershell , consulte esta outra resposta : para outras sugestões sobre como reduzir adequadamente a pasta LogFiles do IIS, confira este post .

    
por 21.11.2016 / 03:22
2

Bem, se você quiser limpá-los regularmente, por que não desabilitar o log de solicitações no IIS? Você pode usar algo como o google analytics ou algum outro serviço, eu vejo muitas pessoas fazendo isso para evitar a dor de cabeça com logs do IIS afetando o desempenho e comendo todo o espaço em disco, mas tudo depende de suas necessidades, claro.

    
por 15.09.2009 / 03:15
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

Note que eu mudei de "DateCreated" para "DateLastModified", pois a data de criação contraintuitiva 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 ).

    
por 15.10.2015 / 20:39
0

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

  • Ação: iniciar um programa
  • Configurações: Programa = Forfiles
  • Incluir Argumentos: -p "C: \ inetpub \ logs \ LogFiles" -s -m . / D -45 / C "cmd / c del @path"
  • Iniciar em: C: \

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

    
por 02.10.2014 / 16:06

Tags