Создание нового файла журнала, превышающего определенный размер

#powershell #logging #scripting

#powershell #ведение журнала #создание сценариев

Вопрос:

Я хотел бы, чтобы скрипт powershell сгенерировал новый файл журнала с тем же именем и скопировал старый файл журнала в новый файл с новым именем, если этот файл журнала будет превышать определенный размер, например, с расширением файла log.1.

Я реализовал базовую команду добавления содержимого с каталогом файлов в качестве переменной:

 $logmsg = $date   " "   $status.ToString()   " "   $item   " "   $perf   " "   $output

Add-Content D:......_log.txt -Value $logmsg
  

На самом деле мне не нужен скрипт для создания дополнительных файлов журнала, таких как, например, log.2, log.3 и т.д. Мне просто нужно сохранить старые журналы в этом файле log.1, и если размер исходного файла журнала снова превысит, файл log.1 можно перезаписать.

Не удалось найти какой-либо метод специально для PS scripting.

Ответ №1:

Если я правильно понимаю ваш вопрос, вы хотели бы сохранить один текущий файл журнала, и если он превышает определенный размер, содержимое следует сохранить в другом файле, а затем очистить текущий файл журнала.

Вы можете сделать это следующим образом:

 $logfile    = 'D:......_log.txt'   # this is your current log file
$oldLogs    = 'D:...old_logs.txt'  # the 'overflow' file where old log contents is written to
$maxLogSize = 1MB                    # the maximum size in bytes you want

$logmsg  = $date   " "   $status.ToString()   " "   $item   " "   $perf   " "   $output

# check if the log file exists
if (Test-Path -Path $logfile -PathType Leaf) {
    # check if the logfile is at its maximum size
    if ((Get-Item -Path $logfile).Length -ge $maxLogSize) {
        # append the contents of the log file to another file 'old_logs.txt'
        Add-Content -Path $oldLogs -Value (Get-Content -Path $logfile)
        # clear the content of the current log file 
        # or delete it completely with Remove-Item -Path $logfile -Force
        Clear-Content -Path $logfile
    }
}

# keep adding info to the current log file
Add-Content -Path $logfile -Value $logmsg
  

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

Комментарии:

1. Это именно то, что мне было нужно. Большое вам спасибо!