Outline
Purpose
Provide an observer that filters log records.
Classes
- See also
- ball_record, ball_context, ball_loggermanager
Description
This component provides a concrete implementation of the ball::Observer
protocol for receiving and processing log records:
,-----------------------.
`-----------------------'
| ctor
V
,--------------.
( ball::Observer )
`--------------'
publish
dtor
Definition ball_filteringobserver.h:170
ball::FilteringObserver
processes the log records it receives through its publish
method and conditionally forwards them to the inner observer supplied at construction.
Usage
This section illustrates intended use of this component.
Example 1: Basic Usage
This example shows how to use filtering observer to route some log records to a designated observer. A common use case is routing all log records for a given category (or category pattern) to a separate log file.
First, we create a filter that will match a log record's category against the pattern "EQUITY.*":
{
"EQUITY.*");
}
Definition ball_context.h:295
const char * category() const
Return the category attribute of this record attributes object.
Definition ball_recordattributes.h:587
Definition ball_record.h:178
RecordAttributes & fixedFields()
Return the modifiable fixed fields of this log record.
Definition ball_record.h:396
static bool isMatch(const char *inputString, const char *pattern)
Then, we create the observer that will receive filtered log records and create a filtering observer:
Definition ball_testobserver.h:217
Definition bslstl_sharedptr.h:1830
Next, we issue a series of log records and verify that only records with the category matching the pattern are published to the inner observer:
record->setFixedFields(fixedFields);
filteringObserver.publish(record, context);
assert(0 == innerObserver->numPublishedRecords());
record->setFixedFields(fixedFields);
filteringObserver.publish(record, context);
assert(1 == innerObserver->numPublishedRecords());
record->setFixedFields(fixedFields);
filteringObserver.publish(record, context);
assert(1 == innerObserver->numPublishedRecords());
Definition ball_recordattributes.h:274
void setCategory(const char *category)
Definition ball_recordattributes.h:544
void createInplace()
Definition bslstl_sharedptr.h:5448
@ e_PASSTHROUGH
Definition ball_transmission.h:214