-PR-
締切済み

ログの解析プログラム

  • 暇なときにでも
  • 質問No.98111
  • 閲覧数197
  • ありがとう数8
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 68% (20/29)

perlにてログの解析プログラムを作成しております。
ログは各データの区切り文字がスペースで出力されます。
その為、例えば文字列で「プログラムの異常が発生しました (発生ノード)」が出力されている場合split関数によって配列に格納しようとすると「プログラムの異常が発生しました」と「(発生ノード)」に分解されて格納されてしまい後ほどの処理に影響が出てしまいます。ログの仕様として文字列を出力するときには直前に文字列の長さを提示しております。例えば「43 プログラムの異常が発生しました (発生ノード)」のような形で出力されます。これらの条件で文字列を一つの配列に格納するにはどのようなプログラムを組めばよろしいでしょうか。

現時点で考えているのは文字列の長さが出ているのでその回数分文字を1文字づつ読み込むことを考えております。ただし全角と半角の区別が自動でついてしまうと厄介なので全部半角として取り込めないかなどを検討しております。
なにか他にいいアイデアがありましたら教えてください。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル10

ベストアンサー率 35% (54/152)

区切り文字をスペースじゃなくしたほうがいいんじゃないですか? ...続きを読む
区切り文字をスペースじゃなくしたほうがいいんじゃないですか?
お礼コメント
nights03

お礼率 68% (20/29)

区切り文字が<>等で出てくれると助かるのですが別のアプリケーションがだしているログをperlで解析しようとしているので四苦八苦しています。例えばsyslogのメッセージの統計を取ろうとした時に単純にスペースを区切り文字にできないですよね。
投稿日時 - 2001-07-02 15:27:47
関連するQ&A


  • 回答No.2
レベル10

ベストアンサー率 47% (88/185)

一般的に、スプリットさせる区切り文字には、 <> を使います。 callhiro さんが言われるように、 スプリットの区切りを変えた方が早いと思いますよ。 ...続きを読む
一般的に、スプリットさせる区切り文字には、

<>

を使います。
callhiro さんが言われるように、
スプリットの区切りを変えた方が早いと思いますよ。
お礼コメント
nights03

お礼率 68% (20/29)

substr関数を使うとうまくいきました。
実際のプログラムは以下のようにしました。

@log_split = split(/ /,$logdata,2);
$logdata[0] = substr($log_split[1],0,$log_split[0]);
$logdata[1] = substr($his_002[1],$his_002[0]);
print "メッセージ内容<BR>\n";
print "<FONT COLOR=\"$font_color\">$logdata[0]</FONT><BR>";
print "<BR>\n";

これで残りのデータは$logdata[1]に入るので活用できます。
投稿日時 - 2001-07-02 15:37:09
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ