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. >>>>>> >>>>>> >>>>>> >>>> >>>> >>>> >