logrotation обрабатывают stdout и stderr окна

У меня есть сервис на окна, это выполняет другой процесс, который печатает много строк к его STDERR и STDOUT. Я получаю те строки и перенаправляю их к некоторому файлу журнала. Я хотел бы к logrotate на этом файле журнала, если его размер становится слишком большим, чтобы создать другой файл и сохранить предыдущий. вместо того, чтобы реализовать его самостоятельно я думал об использовании некоторого третьего лица logrotate библиотеки как spdlog.

проблема - то, что я не могу, очевидно, сделать процесс для использования регистратора API и если

1
задан 5 August 2015 в 12:48
1 ответ

Я собрал очень простой сценарий Powershell, который направит вас в правильном направлении.

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. Получает файл активного журнала
  2. Преобразует размер файла активного журнала в килобайты
  3. Проверяет, составляет ли файл активного журнала 150 КБ
  4. Если файл 150 КБ, захватывает содержимое файла и устанавливает его в новый файл.
  5. Если размер файла НЕ 150 КБ, сценарий завершается.

На что следует обратить внимание

Дубликаты файлов существуют исключения - это главное, на что вы должны обратить внимание. В зависимости от порогового значения файла вы можете захотеть добавить инкрементный номер к НОВОМУ имени файла.

Надеюсь, это поможет.

0
ответ дан 4 December 2019 в 07:18

Теги

Похожие вопросы