This is my main issue. If someone, Remko maybe?, has a solution using
composite and threshold please let me know as so far I have been unable to make
it work using those. My next step would be to write my own LevelRangeFilter.
Thanks,
Nick
> From: nic...@msn.com
> To: log4j-user@logging.apache.org
> Subject: RE: range filter?
> Date: Wed, 26 Aug 2015 10:41:27 -0400
>
> Thanks for clarifying.
>
> My effort to try to get the composite + threshold filter working such that I
> can filter a single level so far has failed. Here is my code:
>
> import org.apache.logging.log4j.LogManager;
> import org.apache.logging.log4j.Logger;
> import org.apache.logging.log4j.Level;
>
> public class HelloWorld
> {
> static Logger log = LogManager.getLogger(HelloWorld.class.getName());
>
> public static void main(String[] args)
> {
> System.out.println("Hello, World");
> log.info("hello this is an INFO message");
> log.warn("hello this is a WARN message");
> log.debug("hello this is a DEBUG message");
> Level level = Level.getLevel("INFOM1");
> if (level == null)
> System.out.println("Didn't find level INFOM1");
> else
> log.log(level, "hello this is an INFOM1 message");
> level = Level.getLevel("INFOP1");
> if (level == null)
> System.out.println("Didn't find level INFOP1");
> else
> log.log(level, "hello this is an INFOP1 message");
> }
> }
>
> Here is my configuration file:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <Configuration status="trace" verbose="true">
> <CustomLevels>
> <CustomLevel name="INFOM1" intLevel="399"/>
> <CustomLevel name="INFOP1" intLevel="401"/>
> </CustomLevels>
> <Appenders>
> <File name="info" fileName="info.log">
> <PatternLayout>
> <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
> </PatternLayout>
> <Filters>
> <ThresholdFilter level="INFOM1" onMatch="DENY" onMismatch="NEUTRAL"/>
> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
> </Filters>
> </File>
> </Appenders>
> <Loggers>
> <Logger name="HelloWorld" level="ALL">
> <AppenderRef ref="info"/>
> </Logger>
> <Root>
> </Root>
> </Loggers>
> </Configuration>
>
> NOTE: The custom levels are not being found by the code as I'm seeing my
> messages to stdout that it couldn't find INFOM1 and INFOP1.
>
> Any suggestion on how to get filtering of a single level working with the
> composite filter + threshold filter?
>
> Thanks,
> Nick
>
> > Subject: Re: range filter?
> > From: ralph.go...@dslextreme.com
> > Date: Wed, 26 Aug 2015 07:05:35 -0700
> > To: log4j-user@logging.apache.org
> >
> > I apologize, you are correct. The level values do decrease.
> >
> > Regardless, your point about wanting to filter on essentially a single
> > integer value makes sense.
> >
> > Ralph
> >
> > > On Aug 26, 2015, at 6:12 AM, Nicholas Duane <nic...@msn.com> wrote:
> > >
> > > Hmmm, I thought for log4j the threshold was less than or equal to the
> > > level. For instance, if the threshold is INFO then INFO and less than,
> > > eg more critical like WARN ERROR and FATAL would match. It's opposite in
> > > log4net. Regardless, this is the issue I wanted to point out. The
> > > stackoverflow article doesn't filter only INFO level, it seems it filters
> > > INFO and anything between INFO and WARN but not including WARN.
> > >
> > > If I want just a single level then I would like a way to specify that
> > > without me having to potentially go back and edit the configuration if
> > > someone decides to specify a custom level via configuration or code. The
> > > LevelRangeFilter provides an easy mechanism for me to do this by
> > > specifying the same level for min and max. I guess you're suggesting I
> > > could accomplish this via the composite filter and the threshold filter,
> > > however, I would have to define a custom level that is one less than or
> > > one more than the level I'm looking to capture so that I ensure I'm only
> > > getting that one level. I will try this out, but it would be nice to
> > > have something like the LevelRangeFilter.
> > >
> > > Thanks,
> > > Nick
> > >
> > >> Subject: Re: range filter?
> > >> From: ralph.go...@dslextreme.com
> > >> Date: Tue, 25 Aug 2015 22:08:01 -0700
> > >> To: log4j-user@logging.apache.org
> > >>
> > >> No. If the custom level was 1 greater than INFO, then yes. In that case
> > >> you would specify your custom level instead of WARN as the level on the
> > >> first ThresholdFilter.
> > >>
> > >> Ralph
> > >>
> > >>> On Aug 25, 2015, at 9:39 PM, Nicholas Duane <nic...@msn.com> wrote:
> > >>>
> > >>> What if someone defined a custom level one less than INFO? Wouldn't
> > >>> that end up in the log also?
> > >>> Thanks,Nick
> > >>>
> > >>> -------- Original message --------
> > >>> From: Ralph Goers <ralph.go...@dslextreme.com>
> > >>> Date: 08/25/2015 10:28 PM (GMT-07:00)
> > >>> To: Log4J Users List <log4j-user@logging.apache.org>
> > >>> Subject: Re: range filter?
> > >>>
> > >>> I just did.
> > >>>
> > >>> Ralph
> > >>>
> > >>>> On Aug 25, 2015, at 9:12 PM, Nicholas Duane <nic...@msn.com> wrote:
> > >>>>
> > >>>> That's exactly the use case I'm looking for. I'll have to study it
> > >>>> some more. Can you give me an example which filters out everything
> > >>>> but INFO?
> > >>>> Thanks,Nick
> > >>>>
> > >>>> -------- Original message --------
> > >>>> From: Remko Popma <remko.po...@gmail.com>
> > >>>> Date: 08/25/2015 9:06 PM (GMT-07:00)
> > >>>> To: Log4J Users List <log4j-user@logging.apache.org>
> > >>>> Subject: Re: range filter?
> > >>>>
> > >>>>
> > >>>> The StackOverflow link was an answer to the question "how to send
> > >>>> _only_ INFO level events to an appender".
> > >>>>
> > >>>>
> > >>>>
> > >>>> I thought it would illustrate how filters combinations could be used
> > >>>> to achieve the original request: "I might want all DEBUG, TRACE and
> > >>>> VERBOSE events going to one appender. All INFO, ERROR and WARN events
> > >>>> going to another appender. All BUSINESS events (my custom) level,
> > >>>> going to yet another appender."
> > >>>>
> > >>>>
> > >>>>
> > >>>> Seemed to me to be a similar use case to the SO question.
> > >>>>
> > >>>>
> > >>>>
> > >>>> Sent from my iPhone
> > >>>>
> > >>>>
> > >>>>
> > >>>>> On 2015/08/26, at 11:44, Ralph Goers <ralph.go...@dslextreme.com>
> > >>>>> wrote:
> > >>>>
> > >>>>>
> > >>>>
> > >>>>> I am not sure why Remko advised you to do it this way. The first
> > >>>>> filter will deny Warn, error and fatal making the next two filters
> > >>>>> redundant. The third filter will accept events at level info and deny
> > >>>>> trace and debug. So the end result is the only events that will get
> > >>>>> logged will be those at INFO level.
> > >>>>
> > >>>>>
> > >>>>
> > >>>>> The composite filter really just wraps other filters and returns
> > >>>>> whatever result they generate. For example, if the first filter
> > >>>>> returns accept or deny then that value will be returned as the result
> > >>>>> without consulting any other filters. If the result is neutral then
> > >>>>> the second filter will be used to see if the event passes that.
> > >>>>
> > >>>>>
> > >>>>
> > >>>>> Ralph
> > >>>>
> > >>>>>
> > >>>>
> > >>>>>
> > >>>>
> > >>>>>> On Aug 25, 2015, at 7:09 PM, Nicholas Duane <nic...@msn.com> wrote:
> > >>>>
> > >>>>>>
> > >>>>
> > >>>>>> Maybe. However, I'm having a hard time following what the
> > >>>>>> configuration is saying and thus have no idea what I would need to
> > >>>>>> put in the configuration. Here is a snippet from that post:
> > >>>>
> > >>>>>>
> > >>>>
> > >>>>>> <!-- Now deny warn, error and fatal messages -->
> > >>>>
> > >>>>>>
> > >>>>
> > >>>>>> <ThresholdFilter level="warn" onMatch="DENY"
> > >>>>>> onMismatch="NEUTRAL"/>
> > >>>>
> > >>>>>>
> > >>>>
> > >>>>>> <ThresholdFilter level="error" onMatch="DENY"
> > >>>>>> onMismatch="NEUTRAL"/>
> > >>>>
> > >>>>>> <ThresholdFilter level="fatal" onMatch="DENY"
> > >>>>>> onMismatch="NEUTRAL"/>
> > >>>>
> > >>>>>>
> > >>>>
> > >>>>>> <!-- This filter accepts info, warn, error, fatal and
> > >>>>>> denies debug/trace -->
> > >>>>
> > >>>>>>
> > >>>>
> > >>>>>> <ThresholdFilter level="info" onMatch="ACCEPT"
> > >>>>>> onMismatch="DENY"/>
> > >>>>
> > >>>>>>
> > >>>>
> > >>>>>>
> > >>>>
> > >>>>>> The top three seem as if they would deny warn, error and fatal, yet
> > >>>>>> the third says it accepts info, warn, error and fatal. And while I
> > >>>>>> understand those in isolation, I think, I have no idea how the
> > >>>>>> <filters> composite would handle this. Why are the first three
> > >>>>>> needed? How does the CompositeFilter work? Does it try to match on
> > >>>>>> each filter in the list of stop as soon as it gets a DENY?
> > >>>>
> > >>>>>>
> > >>>>
> > >>>>>> What if I wanted to setup a filter which just accepted WARN? And on
> > >>>>>> top of that ensure that if anyone defined any custom levels which
> > >>>>>> are maybe just 1 away from WARN in either direction that those don't
> > >>>>>> make it in the appender. How would you do that?
> > >>>>
> > >>>>>>
> > >>>>
> > >>>>>> How I did this with the log4net LevelRangeFilter was to set the
> > >>>>>> levelMin and levelMax to the same value.
> > >>>>
> > >>>>>>
> > >>>>
> > >>>>>> Thanks,
> > >>>>
> > >>>>>> Nick
> > >>>>
> > >>>>>>
> > >>>>
> > >>>>>>> Subject: Re: range filter?
> > >>>>
> > >>>>>>> From: remko.po...@gmail.com
> > >>>>
> > >>>>>>> Date: Wed, 26 Aug 2015 09:12:29 +0900
> > >>>>
> > >>>>>>> To: log4j-user@logging.apache.org
> > >>>>
> > >>>>>>>
> > >>>>
> > >>>>>>> You misread the comment. The commentor basically told me the answer
> > >>>>>>> works with a minor change, and that he would mark the question as
> > >>>>>>> "done" if I would edit my answer (which I did).
> > >>>>
> > >>>>>>>
> > >>>>
> > >>>>>>> So the answer works and seems to apply to your use case, no? The
> > >>>>>>> question is if it also works with custom levels.
> > >>>>
> > >>>>>>>
> > >>>>
> > >>>>>>> Sent from my iPhone
> > >>>>
> > >>>>>>>
> > >>>>
> > >>>>>>>> On 2015/08/26, at 8:49, Nicholas Duane <nic...@msn.com> wrote:
> > >>>>
> > >>>>>>>>
> > >>>>
> > >>>>>>>> Thanks. I checked out the link. It seems they were trying to do
> > >>>>>>>> something similar to me. I see the last comment on that is that
> > >>>>>>>> it doesn't work.
> > >>>>
> > >>>>>>>>
> > >>>>
> > >>>>>>>> There is another post afterwards which uses the ThresholdFilter.
> > >>>>>>>> However the ThresholdFilter won't work as that allows, or denys,
> > >>>>>>>> all levels greater than or equal to or less than or equal to the
> > >>>>>>>> level. I need to filter a specific range of levels.
> > >>>>
> > >>>>>>>>
> > >>>>
> > >>>>>>>> Thanks,
> > >>>>
> > >>>>>>>> Nick
> > >>>>
> > >>>>>>>>
> > >>>>
> > >>>>>>>>> Date: Wed, 26 Aug 2015 08:27:04 +0900
> > >>>>
> > >>>>>>>>> Subject: Re: range filter?
> > >>>>
> > >>>>>>>>> From: remko.po...@gmail.com
> > >>>>
> > >>>>>>>>> To: log4j-user@logging.apache.org
> > >>>>
> > >>>>>>>>>
> > >>>>
> > >>>>>>>>> Can you try something similar to this
> > >>>>
> > >>>>>>>>> http://stackoverflow.com/questions/24695133/log4j2-filter-particular-level-in-apender/24697002#24697002
> > >>>>
> > >>>>>>>>> and see if that works with custom levels as well?
> > >>>>
> > >>>>>>>>>
> > >>>>
> > >>>>>>>>>> On Wed, Aug 26, 2015 at 6:04 AM, Nicholas Duane <nic...@msn.com>
> > >>>>>>>>>> wrote:
> > >>>>
> > >>>>>>>>>>
> > >>>>
> > >>>>>>>>>> I've tried a couple different combinations and so far no luck.
> > >>>>>>>>>> Here's
> > >>>>
> > >>>>>>>>>> the current configuration I tested with which doesn't work:
> > >>>>
> > >>>>>>>>>>
> > >>>>
> > >>>>>>>>>> <File ...>
> > >>>>
> > >>>>>>>>>> <PatternLayout>
> > >>>>
> > >>>>>>>>>> ...
> > >>>>
> > >>>>>>>>>> </PatternLayout>
> > >>>>
> > >>>>>>>>>> <Filters>
> > >>>>
> > >>>>>>>>>> <ThresholdFilter level="INFO" onMatch="DENY"/>
> > >>>>
> > >>>>>>>>>> <ThresholdFilter level="DEBUG" onMatch="ACCEPT"/>
> > >>>>
> > >>>>>>>>>> </Filters>
> > >>>>
> > >>>>>>>>>> </File>
> > >>>>
> > >>>>>>>>>>
> > >>>>
> > >>>>>>>>>> The
> > >>>>
> > >>>>>>>>>> use case for why I want such a filter is to forward a range of
> > >>>>>>>>>> events
> > >>>>
> > >>>>>>>>>> to an appender. The threshold filter won't work because it will
> > >>>>>>>>>> send
> > >>>>
> > >>>>>>>>>> all events matching a certain level and lower to the appender.
> > >>>>>>>>>> For
> > >>>>
> > >>>>>>>>>> instance, I might want all DEBUG, TRACE and VERBOSE events going
> > >>>>>>>>>> to one
> > >>>>
> > >>>>>>>>>> appender. All INFO, ERROR and WARN events going to another
> > >>>>>>>>>> appender.
> > >>>>
> > >>>>>>>>>> All BUSINESS events (my custom) level, going to yet another
> > >>>>>>>>>> appender.
> > >>>>
> > >>>>>>>>>>
> > >>>>
> > >>>>>>>>>> Thanks,
> > >>>>
> > >>>>>>>>>> Nick
> > >>>>
> > >>>>>>>>>>
> > >>>>
> > >>>>>>>>>>> Date: Tue, 25 Aug 2015 13:17:44 -0700
> > >>>>
> > >>>>>>>>>>> Subject: Re: range filter?
> > >>>>
> > >>>>>>>>>>> From: garydgreg...@gmail.com
> > >>>>
> > >>>>>>>>>>> To: log4j-user@logging.apache.org
> > >>>>
> > >>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>> When you get it working, it sounds like it would make a nice
> > >>>>>>>>>>> addition to
> > >>>>
> > >>>>>>>>>>> the FAQ with a description of your use case.
> > >>>>
> > >>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>> Gary
> > >>>>
> > >>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>> On Tue, Aug 25, 2015 at 1:11 PM, Ralph Goers
> > >>>>>>>>>>> <ralph.go...@dslextreme.com
> > >>>>
> > >>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>> wrote:
> > >>>>
> > >>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>>> I believe two threshold filters inside a composite filter
> > >>>>>>>>>>>> should should
> > >>>>
> > >>>>>>>>>>>> work provided you have the onMatch and onMismatch set
> > >>>>>>>>>>>> appropriately.
> > >>>>
> > >>>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>>> Ralph
> > >>>>
> > >>>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>>>> On Aug 25, 2015, at 12:36 PM, Nicholas Duane <nic...@msn.com>
> > >>>>>>>>>>>>> wrote:
> > >>>>
> > >>>>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>>>> I'm looking for a range filter in log4j2. I see there is on
> > >>>>>>>>>>>>> in
> > >>>>
> > >>>>>>>>>> log4net
> > >>>>
> > >>>>>>>>>>>> and it appears there was one written by someone for log4j 1.
> > >>>>>>>>>>>> Just
> > >>>>
> > >>>>>>>>>>>> wondering if there is something 'out of the box' in log4j2
> > >>>>>>>>>>>> that will
> > >>>>
> > >>>>>>>>>>>> accomplish the same? I was wondering whether this could be
> > >>>>
> > >>>>>>>>>> accomplished
> > >>>>
> > >>>>>>>>>>>> with the CompositeFilter with two ThresholdFilter?
> > >>>>
> > >>>>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>>>> Thanks,
> > >>>>
> > >>>>>>>>>>>>> Nick
> > >>>>
> > >>>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>>> ---------------------------------------------------------------------
> > >>>>
> > >>>>>>>>>>>> To unsubscribe, e-mail:
> > >>>>>>>>>>>> log4j-user-unsubscr...@logging.apache.org
> > >>>>
> > >>>>>>>>>>>> For additional commands, e-mail:
> > >>>>>>>>>>>> log4j-user-h...@logging.apache.org
> > >>>>
> > >>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>>
> > >>>>
> > >>>>>>>>>>> --
> > >>>>
> > >>>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
> > >>>>
> > >>>>>>>>>>> Java Persistence with Hibernate, Second Edition
> > >>>>
> > >>>>>>>>>>> <http://www.manning.com/bauer3/>
> > >>>>
> > >>>>>>>>>>> JUnit in Action, Second Edition
> > >>>>>>>>>>> <http://www.manning.com/tahchiev/>
> > >>>>
> > >>>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
> > >>>>
> > >>>>>>>>>>> Blog: http://garygregory.wordpress.com
> > >>>>
> > >>>>>>>>>>> Home: http://garygregory.com/
> > >>>>
> > >>>>>>>>>>> Tweet! http://twitter.com/GaryGregory
> > >>>>
> > >>>>>>>
> > >>>>
> > >>>>>>> ---------------------------------------------------------------------
> > >>>>
> > >>>>>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> > >>>>
> > >>>>>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
> > >>>>
> > >>>>>
> > >>>>
> > >>>>>
> > >>>>
> > >>>>>
> > >>>>
> > >>>>> ---------------------------------------------------------------------
> > >>>>
> > >>>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> > >>>>
> > >>>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
> > >>>>
> > >>>>>
> > >>>>
> > >>>>
> > >>>>
> > >>>> ---------------------------------------------------------------------
> > >>>>
> > >>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> > >>>>
> > >>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
> > >>>>
> > >>>>
> > >>>>
> > >>>>
> > >>>
> > >>>
> > >>>
> > >>> ---------------------------------------------------------------------
> > >>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> > >>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
> > >>>
> > >>
> > >>
> > >>
> > >> ---------------------------------------------------------------------
> > >> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> > >> For additional commands, e-mail: log4j-user-h...@logging.apache.org
> > >>
> > >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> > For additional commands, e-mail: log4j-user-h...@logging.apache.org
> >
>