-3

次の方法でログが送信されます。

2013-07-10 17:27:08 +0900 app.log.error.traffic: {"app.log_count":10,"app.log_bytes":9960,"app.log_count_rate":0.5,"app.log_bytes_rate":166.0}

「app.log.error.traffic」の部分は変更されませんが、日付やその他の数値は常に変更されます。つまり、「2013-07-10」は毎日変化し、「08 +0900」も変化し、「app.log.error.traffic:」は変化せず、「app.log_count」も変化しません。 .

"app.log_count": の横の数値がしきい値レベルを超えた場合に警告を発する perl スクリプトを作成したいと考えています。

私は以下を作りました:

 #!/usr/bin/env perl         
 use strict;
 use warnings; 
 use utf8;

 my $file_location = "/var/log/app.log" ; 
 my $threshold = 3;        

 open my $infile, "<", $file_location or die("$!: $file_location");
    while (<$infile>) {
      if (/ REGEX /) {
          if ($_ >= $threshold) {
          # warning
          } else {
          # not warning;
          }
      }
  }    

close $infile;

しかし、ご覧のとおり、最も重要な部分が欠落しています。REGEX には何を入れますか?

4

1 に答える 1

2

あなたは次のようなことができます

use strict;
use warnings;

while(<DATA>){
    my ($value) = $_=~ /"app.log_count":(\d+)/;
    print"$value\n"; # will give you 10
}

__DATA__
013-07-10 17:27:08 +0900 app.log.error.traffic: {"app.log_count":10,"app.log_bytes":9960,"app.log_count_rate":0.5,"app.log_bytes_rate":166.0}
于 2013-07-10T09:10:26.370 に答える