DESIGN in wvanbergen-request-log-analyzer-1.1.2 vs DESIGN in wvanbergen-request-log-analyzer-1.1.3

- old
+ new

@@ -2,23 +2,37 @@ This allows you to easily add extra reports, filters and outputs. 1) Build pipeline. -> Aggregator (database) - Source -> Filter -> Filter -> Aggregator (summary report) + Source -> Filter -> Filter -> Aggregator (summary report) -> Output -> Aggregator (...) - + 2) Start chunk producer and push chunks through pipeline. - Controller.start + Controller.start + +RequestLogAnalyzer::Source is an Object that pushes requests into the chain. +At the moment you can only use the log-parser as a source. +It accepts files or stdin and can parse then into request objects using a RequestLogAnalyzer::FileFormat definition. +In the future we want to be able to have a generated request database as source as this will make interactive +down drilling possible. +The filters are all subclasses of the RequestLogAnalyzer::Filter class. +They accept a request object, manipulate or drop it, and then pass the request object on to the next filter +in the chain. +At the moment there are three types of filters available: Anonymize, Field and Timespan. + +The Aggregators all inherit from the RequestLogAnalyzer::Aggregator class. +All the requests that come out of the Filterchain are fed into all the aggregators in parallel. +These aggregators can do anything what they want with the given request. +For example: the Database aggregator will just store all the requests into a SQLite database while the Summarizer will +generate a wide range of statistical reports from them. + 3) Gather output from pipeline. Controller.report -At the moment the supported sources are file and STDIN. -In the future we want to be able to have a generated request database as source. -This will make interactive downdrilling possible. +All Aggregators are asked to report what they have done. For example the database will report: I stuffed x requests +into SQLite database Y. The Summarizer will output its reports. - -For the report generation output we now use the File and the STDOUT class, as they both support <<. -In the future we want to have a OutputFile, OutputSTDOUT and OutputHTML class, so that reports can generate -tables, lines and comments and push them into the output class. +The output is pushed to a RequestLogAnalyzer::Output object, which takes care of the output. +It can generate either ASCII, UTF8 or even HTML output.