Beispiel #1
0
// 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";
    }
}
Beispiel #2
0
// 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";
    }
}
Beispiel #3
0
// 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";
    }
}