This is a sample Rule I had in mind,

{
>   "loggerThresholds": {
>     "a.b.c.Class1": "WARN",
>     "a.b.c.Class2": "TRACE",
>     "a.b.c.Class3": "OFF"
>   },
>   "allowlistedHosts": [
>     "a.b.c.us-west-1.com",
>     "a.b.c.us-west-2.com"
>   ],
>   "ruleValidityTime": "2022-01-24T00:03:31.593"
> }
>

This basically would filter logging from the given loggers in
loggerThresholds only on the allowlistedHosts until ruleValidityTime.

The advantage of this over new filters is, new filters require code
changes, this wouldn't as my intention is to store the rules in some
configuration store and it would be fetched via the Supplier.

On Fri, Oct 22, 2021 at 7:01 AM Apache <ralph.go...@dslextreme.com> wrote:

> After thinking about this more I can’t quite figure out what the user
> would be specifying in the configuration. A Java lambda expression? I.e
> what is the rule syntax? Or are they expected to just configure predefined
> rules with perhaps some variables. But if that is the case how is this
> really any different than just creating new filters? The only real
> difference I see is that the Supplier presumably returns a Boolean instead
> of a filter result.
>
> Ralph
>
> > On Oct 21, 2021, at 4:51 PM, Ralph Goers <ralph.go...@dslextreme.com>
> wrote:
> >
> > This sounds interesting. I might give it a whirl but  firstI am trying
> to finish up some work on
> > Apache Flume so it can get a new release and I need to do some other
> work here as we
> > are overdue for a release.
> >
> > Ralph
> >
> >> On Oct 21, 2021, at 11:28 AM, Adwait Kumar Singh <
> theadvaitkumarsi...@gmail.com> wrote:
> >>
> >> The problem I am stuck on is the best way to get the user to provide the
> >> ruleSupplier via configuration.
> >>
> >>> On Thu, Oct 21, 2021 at 11:55 PM Adwait Kumar Singh <
> >>> theadvaitkumarsi...@gmail.com> wrote:
> >>>
> >>> Yes I mean filtering on those loggers.
> >>>
> >>> I don't expect the Supplier to be dynamically changed, only the rules
> they
> >>> are fetching. Something roughly like this
> >>>
> >>> public class RuleBaseFilter extends AbstractFilter {
> >>>
> >>>   //This will be initialized only once
> >>>   Supplier<List<Rules>> rulesSupplier;
> >>>
> >>>
> >>> @Override
> >>>  public Result filter(final Logger logger, final Level level, final
> >>> Marker marker, final Message msg,
> >>>      final Throwable t) {
> >>>       List<Rules> rules = rulesSupplier.get();
> >>>       //evaluate rules and filter
> >>> }
> >>>
> >>> }
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> On Thu, Oct 21, 2021 at 11:19 PM Ralph Goers <
> ralph.go...@dslextreme.com>
> >>> wrote:
> >>>
> >>>> Sorry, you have lost me a little bit.
> >>>>
> >>>> When you say dynamically turn on/off loggers I am assuming you really
> >>>> mean
> >>>> enable/disable filtering on those Loggers?
> >>>>
> >>>> Are you thinking that the rules can be added or removed dynamically?
> Or
> >>>> just the
> >>>> parameters to the rules? I ask because you can’t really add a Supplier
> >>>> dynamically
> >>>> if it is part of the configuration. Log4j will process the
> configuration
> >>>> only when it is
> >>>> changed. However, the data they rely on can come from anywhere - more
> or
> >>>> less
> >>>> how we use Lookups to evaluate conditions on every log event.
> >>>>
> >>>> Ralph
> >>>>
> >>>>> On Oct 21, 2021, at 8:44 AM, Adwait Kumar Singh <
> >>>> theadvaitkumarsi...@gmail.com> wrote:
> >>>>>
> >>>>> This is still in the proof of concept phase, but what I am trying to
> do
> >>>> is
> >>>>> create a filter which allows developers to dynamically turn on/off
> >>>> loggers
> >>>>> based on some parameters without restarting their system. The
> parameters
> >>>>> can be varied, like:
> >>>>> 1. Turn on WARN log levels of a particular class.
> >>>>> 2. Turn on TRACE logging only on a particular host.
> >>>>> 3. Turn on DEBUG logs only for requests by a particular client for a
> >>>> short
> >>>>> duration,
> >>>>> ... and any combination of such parameters.
> >>>>>
> >>>>> The way I was thinking of doing this was creating a filter which
> takes
> >>>> in a
> >>>>> Supplier<Rule> and then evaluates a log event against that rule.
> >>>>>
> >>>>> On Thu, Oct 21, 2021 at 7:37 PM Apache <ralph.go...@dslextreme.com>
> >>>> wrote:
> >>>>>
> >>>>>> It sounds to me like you want to create a new type of plugin
> similar to
> >>>>>> PatternConerters. I am curious as to what your filter does. Is it
> >>>> something
> >>>>>> that would be useful to others so that we would be interested in
> >>>> including
> >>>>>> it?
> >>>>>>
> >>>>>> Ralph
> >>>>>>
> >>>>>>> On Oct 21, 2021, at 6:07 AM, Adwait Kumar Singh <
> >>>>>> theadvaitkumarsi...@gmail.com> wrote:
> >>>>>>>
> >>>>>>> I am creating a filter which requires the user to give a
> >>>> Supplier<Rule>
> >>>>>> to
> >>>>>>> fetch some custom rules. I am wondering how to go about getting
> this
> >>>>>>> Supplier from the configuration xml.
> >>>>>>>
> >>>>>>> One way I have thought of is using some sort of Registry and then
> just
> >>>>>>> asking the user to provide a key to lookup into the Registry to
> fetch
> >>>> the
> >>>>>>> Supplier. The user then registers his Supplier to this Registry in
> >>>> Java
> >>>>>>> code.
> >>>>>>> What are your thoughts on this and do you guys know of a better way
> >>>> to do
> >>>>>>> this?
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Adwait.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>>>
> >
>
>
>

Reply via email to