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()); >> } >> } >> } >> >