// Test that sequence limiting works void test16(const DestinationPtr &sink1) { banner("test16 - sequence limiting"); FilterPtr limited = SequenceFilter::instance(10, 2, 5); // every other message beginning with #10, five total limited->addDestination(sink1); Stream merr = Stream("test16", INFO, limited); for (size_t i=0; i<100; ++i) { merr <<"i=" <<i <<"\n"; } }
// Test that rate limiting works void test15(const DestinationPtr &sink1) { banner("test15 - rate limiting"); FilterPtr limited = TimeFilter::instance(0.5); limited->addDestination(sink1); Stream merr = Stream("test15", INFO, limited); for (size_t i=0; i<5000000; ++i) { merr <<"i=" <<i <<"\n"; } }
// Demonstrate rate limiting per importance level void test15b(const DestinationPtr &sink1) { banner("test15b - per importance rate limiting"); Facility log("test15b", sink1); for (size_t i=DEBUG; i<=FATAL; ++i) { Importance imp = (Importance)i; FilterPtr limiter = TimeFilter::instance(1.0); limiter->addDestination(log[imp].destination()); log[imp].destination(limiter); } for (size_t i=0; i<300000; ++i) { log[DEBUG] <<"i=" <<i <<"\tdebugging message\n"; log[TRACE] <<"i=" <<i <<"\ttracing message\n"; log[WHERE] <<"i=" <<i <<"\tmajor execution point\n"; log[INFO] <<"i=" <<i <<"\tinformational message\n"; log[WARN] <<"i=" <<i <<"\twarning message\n"; log[ERROR] <<"i=" <<i <<"\terror message\n"; log[FATAL] <<"i=" <<i <<"\tfatal error message\n"; } }