It seems my custom levels aren't working as I'm getting null from 
Level.getLevel() when passing those custom level names.
 
Thanks,
Nick
 
> Date: Thu, 27 Aug 2015 08:34:43 +0900
> Subject: Re: custom levels via configuration
> From: remko.po...@gmail.com
> To: log4j-user@logging.apache.org
> 
> I don't have time to investigate now, but it looks like our support for
> CustomLevels is not implemented in ThresholdFilter yet.
> 
> If you use a custom level in your logger config it should work. For example:
> <loggers>
>   <root level="INFOP1">
>     <appenderref ref="file" level="INFOM1" />
> ...
> 
> Remko
> 
> 
> 
> On Thu, Aug 27, 2015 at 8:22 AM, Nicholas Duane <nic...@msn.com> wrote:
> 
> > Both were not found from my HelloClass.  And I had sent out some log4j
> > logging in where there was a warning which I assume was related to me using
> > INFOM1 in the threshold filter.
> >
> > Thanks,
> > Nick
> >
> > > Date: Thu, 27 Aug 2015 08:20:20 +0900
> > > Subject: Re: custom levels via configuration
> > > From: remko.po...@gmail.com
> > > To: log4j-user@logging.apache.org
> > >
> > > Nick,
> > >
> > > What was the output of this program? Were both INFOM1 and INFOP1 not
> > found,
> > > or was INFOM1 found (because it is used in the ThresholdFilter), but not
> > > INFOP1?
> > >
> > > Remko
> > >
> > > On Thu, Aug 27, 2015 at 3:19 AM, Nicholas Duane <nic...@msn.com> wrote:
> > >
> > > >
> > > >
> > > >
> > > > On to my next problem.  I'm trying to define a custom level in
> > > > configuration.  Not sure if it's working or not.  However, when I
> > attempt
> > > > to get the level for that custom level I get back null, which I wasn't
> > > > expecting.  Here is the log4j2.xml config 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>
> > > >
> > > > 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");
> > > >     }
> > > > }
> > > >
> > > > Any ideas?  I obviously don't want to use Level.forName() as that will
> > > > create the level if it doesn't exist and I want to ensure I'm pulling
> > the
> > > > value from the configuration.
> > > >
> > > > Thanks,
> > > > Nick
> > > >
> > > >
> >
> >
                                          

Reply via email to