生成超过特定大小的新日志文件

时间:2019-03-18 12:03:40

标签: powershell logging scripting

我希望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 个答案:

答案 0 :(得分: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

希望这会有所帮助