Evil Dave crabbed about repetitive error logging, that's what motivated me
to do this.

On Fri, Apr 3, 2020 at 9:59 AM Aaron Canary <acan...@verizonmedia.com>
wrote:

> Yes and no. It makes it easier for humans to read (sometimes). I know ops
> uses Splunk to report the most frequent errors/warnings.
> Also, I tend to grep or other post-process filters to just look at a
> single session/transaction, and it would suck to not have the error because
> it already happened for something else.
>
> Maybe it could be used in conjunction with normal tag filtered debug
> output.
> <thought1>
> void DebugError(tag, throttle, msg, args);
>   // if tag is enabled, logs all errors
>   // else throttles log errors
> </thought1>
>
> But I could also use it to set a transaction to be verbose every once in a
> while, without overloading a production machine.
> Something like this would also make HostDB timing/updates
> considerably more readable.
>
> On Tue, Mar 31, 2020 at 4:58 PM Walt Karas <wka...@verizonmedia.com.invalid>
> wrote:
>
>> Should we add a utility like this to include/ts/util ?
>>
>> class Throttle
>> {
>> public:
>>   Throttle(unsigned secondsBetween = 60);
>>
>>   // Returns true the first time it's called, and if the time since the
>> last time it returned true is
>>   // more than secondsBetween seconds.
>>   //
>>   bool operator () ();
>>
>>   // Returns the number of times the member operator has been called.
>>   //
>>   unsigned times() const;
>> };
>>
>> void Error(...);
>>
>> void foo(bool zwoop_ate_too_much_sushi)
>> {
>>     if (zwoop_ate_too_much_sushi) {
>>         static Throttle t;
>>
>>         if (t()) {
>>             Error("Zwoop ate too much sushi %u times, make salmon an
>> endangered species", t.times());
>>         }
>>     }
>> }
>>
>

Reply via email to