2011-01-06 16 views
8

ログ解析専用のC++ライブラリがありますか? Apacheログ用MergeLogやウェブ解析用libcurlと似ていますか?ログ解析のためのC++ライブラリ

+0

ええと、boost :: regexと呼ばれています。 –

+0

マキシムの提案が本当にこの場合に十分であるかもしれません。 Boost.Xpressiveはよかったですが、 http://www.boost.org/doc/libs/1_36_0/doc/html/xpressive.html –

答えて

6

適切なライブラリが見つからない限り、私の助言は、スタンドアロンのレクサーを使用することです。

  • flex + bisonの代わりにflex alone(C/C++)を使用してください。
  • ocamllex + ocamlyaccの代わりにocamllex alone(OCaml)を使用してください。
  • Ragel(C/C++/Objective C/D/Java/Ruby)。

このようにして、文法(ログファイルには無意味です)を定義する必要がなくなり、暗い場所で見られる恐ろしいフランケンシュタインの正規表現モンスターを回避できます。

2

ログ解析ライブラリは認識していません。 Boost.SpiritANTLR、またはlex/yaccのような汎用パーサジェネレータを常に使用することができます。そのアプローチはおそらくもっと仕事になるでしょうが、非常に柔軟です。

パーサージェネレーターが過剰である場合は、ログファイルに多くの正規表現を追加します。

+0

ありがとうございました。Josh、 yacc/lexはプログラマーにやや重いようです。 –

+0

パーサーパーツをスキップし、スタンドアロンのレクサーを使用できます。これは、構造化されていない正規表現の束よりもはるかに便利で、完全なパーサーよりも簡単です。 – bltxd

+0

@stack_zen:Spirit、ANTLR、およびlex/yaccは、すべて同じロールを多かれ少なかれ満たします。スピリットとANTLRはもっとモダンで、おそらくもっと学びやすくなります。あなたが言ったように、それらのすべては少し重くなることができますが、彼らは強力なツールです。 –

関連する問題