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

Reply via email to