Once you have all this data, it's time to generate some
useful reports out of it. Lire's framework includes a
generic report builder. What Lire calls a
report is actually a
collection of what one may understand
as reports; Lire however speaks about a
subreports. For example, the proxy's
superservice report will contain subreports about the top
visited sites, another subreport on the cache hit ratio, as
well as several others. The subreports are defined using the
Report Specification Markup Language.
This markup language contains elements for several things:
information regarding the schema on which it operates;
descriptions that should be included in the generated report
to help in the interpretation of the data; parameters that
can be used to modify the generated report (for example, to
generate a top 20 subreport instead of a top 10); a filter
that selects the records that will be used for the
subreport; and finally the operations that make up the
subreport: grouping, summing, counting, etc. The report
markup language covers most simple needs and there is an
extension element as well as an API that can be used to hook
in more fancy computations. There are no subreport
specifications in the current distribution that make use of
this feature yet, however. You can see an overview of this
process in the Figure 1.4 figure.
The actual computation of the subreport is delegated to another module of the framework. Presently, the DLF concept is implemented as simple space delimited log files. This makes it very portable and very simple, but for huge amounts of log data this isn't necessarily the best solution. But it would be easy to switch to a database driven backend where the DLF records are hold in tables and the subreport specifications are mapped to SQL queries.
The generated report is another XML file that uses another markup language, this time called the Lire's Report Markup Language. An actual report contains the help descriptions from the report specifications, information on the subreport specifications used, as well as the actual subreport's data.Using another intermediary XML file as output format makes all sort of things possible in the formatting and post-processing stage.