0

ログファイルから特定の文字列を削除する必要があります。はい、私はこれが逆に聞こえることを知っていますが、みんなの正気のために、私を信じてください:これらの役に立たない通知が最初にログインするために書かれるのを避ける方法はありません。

したがって、ログを読みやすくするには、そのような通知を書き込んだ後で削除する必要があります。

汚染されたログファイルの例を次に示します。

ERROR - 2012-08-06 02:12:01 --> Severity: Notice  --> Undefined index: H1 /var/www/vhosts/example.com/httpdocs/application/helpers/mpdf/mpdf.php 14242
ERROR - 2012-08-06 02:12:01 --> Severity: Notice  --> Undefined index: H1>>ID>> /var/www/vhosts/example.com/httpdocs/application/helpers/mpdf/mpdf.php 14288
ERROR - 2012-08-06 02:12:01 --> Severity: Notice  --> Undefined index: H1 /var/www/vhosts/example.com/httpdocs/application/helpers/mpdf/mpdf.php 14242
ERROR - 2012-08-06 02:12:01 --> Severity: Notice  --> Undefined index: H1>>ID>> /var/www/vhosts/example.com/httpdocs/application/helpers/mpdf/mpdf.php 14288
ERROR - 2012-08-06 02:12:01 --> Severity: Notice  --> Undefined index: DIV /var/www/vhosts/example.com/httpdocs/application/helpers/mpdf/mpdf.php 14242

次の行を削除したい:

  • '通知'を含むAND
  • '未定義'ANDを含む
  • 'mpdf.php'を含む

私はこれらの線に沿った何かが始まりかもしれないと信じています:

$dir = '/var/www/vhosts/example.com/httpdocs/application/logs/log-2012-07-07.php';

$content = file_get_contents($dir);

$new = preg_replace($pattern, '', $content) // <===== need help here with $pattern regex

file_put_contents($dir, $new);

これを行う方法について何か提案はありますか?

4

1 に答える 1

1
sed -i '/Notice/ { /Undefined/ { /mpdf.php/ d}}' LOG_FILE

より一般的には、

A="..." B="..." C="..." sed -i "/$A/{/$B/{/$C/ d}}" FILE

文字列$Aと$Bと$Cを含むすべての行を削除します。

于 2012-08-06T01:44:20.663 に答える