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.