2011-01-06 20 views
8

¿Hay alguna biblioteca C++ específicamente para analizar el registro (ayudando a reconocer eventos de líneas múltiples)? ¿Le gusta MergeLog para los registros de Apache o libcurl para el análisis web?Biblioteca C++ para analizar el registro

+0

Sí, se llama boost :: regex. –

+0

Quizás la sugerencia de Maxim sea realmente suficiente para este caso. Boost.Xpressive se ve mejor sin embargo, http://www.boost.org/doc/libs/1_36_0/doc/html/xpressive.html –

Respuesta

6

A menos que tropiece con una biblioteca adecuada, mi consejo sería utilizar un lector autónomo.

  • En lugar de flex + bison, use flex alone (C/C++).
  • En lugar de ocamllex + ocamlyacc, use ocamllex alone (OCaml).
  • Ragel (C/C++/Objective C/D/Java/Ruby).

esta manera se evita tener que definir una gramática (que es una especie de sentido para los archivos de registro de todos modos) y evitar la temida frankenstein en expresiones regulares monstruo veces visto en lugares oscuros.

2

No conozco ninguna biblioteca de análisis de registro. Siempre puede utilizar un generador de analizadores de propósito general, como Boost.Spirit, ANTLR o lex/yacc; ese enfoque probablemente sería más trabajo, pero es extremadamente flexible.

Si un generador de analizadores es excesivo, entonces simplemente lanzaría muchas expresiones regulares en los archivos de registro.

+0

Gracias Josh, yacc/lex parece un poco pesado en el programador. –

+0

Puede omitir la parte del analizador y utilizar un lector independiente. Esto es mucho más conveniente que un grupo de expresiones regulares no estructuradas y mucho más fácil que un analizador completo. – bltxd

+0

@stack_zen: Spirit, ANTLR y lex/yacc cumplen el mismo rol, más o menos. Spirit y ANTLR son más modernos y probablemente más fáciles de aprender. Todos ellos pueden ser un poco pesados, como dijiste, pero son herramientas poderosas. –

Cuestiones relacionadas