janelas stdout e stderr do processo de logrotation

1

Eu tenho um serviço no Windows que está executando outro processo que imprime muitas linhas para o seu STDERR e STDOUT. Estou capturando essas linhas e redirecionando-as para algum arquivo de log. Eu gostaria de logrotate neste arquivo de log, se seu tamanho está ficando muito grande para criar outro arquivo e salvar o anterior. em vez de implementá-lo sozinho, pensei em usar algumas bibliotecas de logrotate de terceiros, como o spdlog.

o problema é que eu obviamente não posso fazer o processo para usar a API do registrador e se

    
por ItamarBe 05.08.2015 / 11:48

1 resposta

0

Eu montei um roteiro Powershell muito básico para guiá-lo na direção certa.

Function logrotate (
$activefile = "C:\activelog.text",
$dest = "C:\",$activefile_size,
$newfilename = "arotatedlog.text")
{
$activefile_size = get-item $activefile| Select-Object Name, CreationTime,  @{Name="Kbytes";Expression={$_.Length / 1Kb}}
if ($activefile_size.Kbytes -gt 150)
{Write-Host "File size equal or greater than 150KB"
$dest = "$dest + $newfilename"
Get-Content $activefile | Set-Content -Path $dest
}
logrotate
  1. Obtém o arquivo ativelog
  2. Coberta o tamanho do arquivo ativelog para kilobytes
  3. Verifica se o arquivo activelog é de 150kb
  4. Se o arquivo tiver 150kb, pega o conteúdo do arquivo e o configura para novo arquivo.
  5. Se o arquivo NÃO for 150kb, o script será finalizado.

Coisas para procurar

Arquivo duplicado existem exceções é a principal coisa que você deve procurar. Dependendo do limite do arquivo, talvez você queira adicionar um número incremental ao nome do arquivo NEW.

Espero que isso ajude.

    
por 06.08.2015 / 21:34