问题描述
我正在寻找一个脚本,使我可以更正几个月以来错误生成的日志文件的格式,从而得到以下格式
$response = $this->client->execute(new OrdersCaptureRequest($payment_id));
我希望更正以下格式
xx-xxx-20xx xx:xx:xx INFO : xxxx-x : Demande d'envoi du mail Sujet: XXX - XXXXX
/ EQUIPEMENT / Arrivée:20xx-xx-xx
xx-xxx-20xx xx:xx:xx INFO : xxxx-x : Demande d'envoi du mail Sujet: XXX - XXXXX
/ ACCI / Arrivée:20xx-xx-xx
xx-xxx-20xx xx:xx:xx INFO : xxxx-x : Demande d'envoi du mail Sujet: XXX - XXXXX
/ CMS / Arrivée:20xx-xx-xx
我正在尝试使用已经创建的清晰的日志脚本,但是我无法做到这一点,对我在网上发现的内容毫无帮助。
xx-xxx-20xx xx:xx:xx INFO : xxxx-x : Demande d'envoi du mail Sujet: XXX - XXXXX / EQUIPEMENT / Arrivée:20xx-xx-xx
xx-xxx-20xx xx:xx:xx INFO : xxxx-x : Demande d'envoi du mail Sujet: XXX - XXXXX / ACCI / Arrivée:20xx-xx-xx
xx-xxx-20xx xx:xx:xx INFO : xxxx-x : Demande d'envoi du mail Sujet: XXX - XXXXX / CMS / Arrivée:20xx-xx-xx
解决方法
假设您的日志文件始终采用您指定的格式,则您一次只能读取源文件2行并将它们连接在一起:
PS C:\Users\Brice> F:\Desktop\jsonconvert.ps1
ConvertFrom-Json : Invalid JSON primitive: .
At F:\Desktop\jsonconvert.ps1:1 char:63
+ ... nt 'F:\Desktop\1.txt' | Out-String | ConvertFrom-Json | Conve ...
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertFrom-Json],ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand
用法:
function Repair-LogFile
{
param( $Logfile )
$lineCount = 2;
# read 2 lines of log file into a buffer,# then join them together and output the result
Get-Content -Path $Logfile -Encoding UTF8 | foreach-object `
-Begin {
$buffer = @();
} `
-Process {
$buffer += $_;
if( $buffer.Length -eq $lineCount )
{
Write-Output ($buffer -join "");
$buffer = @();
}
} `
-End {
if( $buffer.Length -gt 0 )
{
Write-Output ($buffer -join "");
}
}
}
,
另一种方法是将switch
与参数Regex
和File
一起使用:
$result = switch -Regex -File 'D:\Test\some.log' {
'^\s\/' { $line + $_ ; $line = '' }
default { $line = $_ }
}
# output on screen
$result
#output to new log file
$result | Set-Content -Path 'D:\Test\new.log'
输出:
xx-xxx-20xx xx:xx:xx INFO : xxxx-x : Demande d'envoi du mail Sujet: XXX - XXXXX / EQUIPEMENT / Arrivée:20xx-xx-xx xx-xxx-20xx xx:xx:xx INFO : xxxx-x : Demande d'envoi du mail Sujet: XXX - XXXXX / ACCI / Arrivée:20xx-xx-xx xx-xxx-20xx xx:xx:xx INFO : xxxx-x : Demande d'envoi du mail Sujet: XXX - XXXXX / CMS / Arrivée:20xx-xx-xx