Создание нового файла журнала превышает определенный размер - PullRequest
0 голосов
/ 18 марта 2019

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

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

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

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

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

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

1 Ответ

1 голос
/ 18 марта 2019

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

Вы можете сделать это так:

$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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...