The script filters are already dynamic for script engines. Have you looked at 
that?

Matt Sicker

> On Oct 22, 2021, at 03:22, Gary Gregory <garydgreg...@gmail.com> wrote:
> 
> Why not reuse the feature that lets log4j automatically reload a
> configuration file if it detects the file has changed?
> 
> Then we only have to consider what kind of configuration is needed.
> 
> Gary
> 
>> On Fri, Oct 22, 2021, 02:18 Adwait Kumar Singh <
>> theadvaitkumarsi...@gmail.com> wrote:
>> 
>> 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