I got log4j 2.3 installed and verified that custom levels are working for me 
now.  However, I did noticed you can't set the intValue to a negative number.  
Is that by design?

Thanks,
Nick

> From: nic...@msn.com
> To: log4j-user@logging.apache.org
> Subject: RE: custom levels via configuration
> Date: Wed, 26 Aug 2015 20:34:13 -0400
> 
> That would certainly be a possible explanation.  I'm working on figuring out 
> how to upgrade to log4j 2.3.  Hopefully that will solve my custom levels 
> issue.
>  
> Thanks,
> Nick
>  
> > Subject: Re: custom levels via configuration
> > From: ralph.go...@dslextreme.com
> > Date: Wed, 26 Aug 2015 17:05:02 -0700
> > To: log4j-user@logging.apache.org
> > 
> > Custom log levels weren’t added to Log4j 2 until version 2.1, so if the 
> > version you are using is older than that it is no surprise that it isn’t 
> > working.
> > 
> > Ralph
> > 
> > > On Aug 26, 2015, at 2:34 PM, Nicholas Duane <nic...@msn.com> wrote:
> > > 
> > > While I work on figuring out how to get a newer version of log4j2 
> > > installed I'm wondering whether there is some additional investigation I 
> > > can do with the version I have.  For instance, I was hoping with the 
> > > level of logging I have enabled, that log4j would be indicating some 
> > > issue it had with the custom level.  However, I don't see such an issue.  
> > > The only thing I see is an issue with the custom level, which I'm 
> > > guessing is when I'm using it in the filter.  I've attached the warning 
> > > in the log below.
> > > 
> > > Is there some additional logging I can turn on such that log4j will 
> > > produce more info which might indicate why my custom levels aren't 
> > > working?  Here is my current log4j2 configuration.
> > > 
> > > log4j2.xml:
> > > 
> > > <?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>
> > > 
> > > snippet of console output:
> > > 
> > > 2015-08-26 14:26:21,070 WARN Error while converting string [INFOM1] to 
> > > type [class org.apache.logging.log4j.Level]. Using default value [null]. 
> > > java.lang.IllegalArgumentException: Unknown level constant [INFOM1].
> > >    at org.apache.logging.log4j.Level.valueOf(Level.java:281)
> > >    at 
> > > org.apache.logging.log4j.core.config.plugins.util.TypeConverters$LevelConverter.convert(TypeConverters.java:240)
> > >    at 
> > > org.apache.logging.log4j.core.config.plugins.util.TypeConverters$LevelConverter.convert(TypeConverters.java:237)
> > >    at 
> > > org.apache.logging.log4j.core.config.plugins.util.TypeConverters.convert(TypeConverters.java:343)
> > >    at 
> > > org.apache.logging.log4j.core.config.plugins.visitors.AbstractPluginVisitor.convert(AbstractPluginVisitor.java:130)
> > >    at 
> > > org.apache.logging.log4j.core.config.plugins.visitors.PluginAttributeVisitor.visit(PluginAttributeVisitor.java:44)
> > >    at 
> > > org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.generateParameters(PluginBuilder.java:233)
> > >    at 
> > > org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:131)
> > >    at 
> > > org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:748)
> > >    at 
> > > org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:683)
> > >    at 
> > > org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:675)
> > >    at 
> > > org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:675)
> > >    at 
> > > org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:675)
> > >    at 
> > > org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:349)
> > >    at 
> > > org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:150)
> > >    at 
> > > org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:358)
> > >    at 
> > > org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:416)
> > >    at 
> > > org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:146)
> > >    at 
> > > org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:75)
> > >    at 
> > > org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:37)
> > >    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:473)
> > >    at HelloWorld.<clinit>(HelloWorld.java:7)
> > > 
> > > Thanks,
> > > Nick
> > > 
> > >> Date: Wed, 26 Aug 2015 12:36:40 -0700
> > >> Subject: Re: custom levels via configuration
> > >> From: garydgreg...@gmail.com
> > >> To: log4j-user@logging.apache.org
> > >> 
> > >> We've never released a version "2.0-1.fc21" so it must be a Fedora build,
> > >> presumably based on 2.0 or some fork of it.
> > >> 
> > >> You need to test with version 2.3 or a 2.4-SNAPSHOT. I'll leave you to
> > >> Google how to install 2.3 on Fedora ;-)
> > >> 
> > >> Gary
> > >> 
> > >> On Wed, Aug 26, 2015 at 12:14 PM, Nicholas Duane <nic...@msn.com> wrote:
> > >> 
> > >>> First off let me admit that I'm a noob at both Linux and java, and log4j
> > >>> for that matter.
> > >>> 
> > >>> I don't know how to package anything so my class that you see is a 
> > >>> simple
> > >>> java class which I compiled using javac.  I then run it using 'java
> > >>> HelloWorld'.  I'm running fedora 21.  When I do a 'yum list log4j' it 
> > >>> says
> > >>> I have 2.0-1.fc21.
> > >>> 
> > >>> Thanks,
> > >>> Nick
> > >>> 
> > >>>> Date: Wed, 26 Aug 2015 11:46:51 -0700
> > >>>> Subject: Re: custom levels via configuration
> > >>>> From: garydgreg...@gmail.com
> > >>>> To: log4j-user@logging.apache.org
> > >>>> 
> > >>>> This:
> > >>>> 
> > >>>> <Logger name="HelloWorld" level="ALL">
> > >>>> 
> > >>>> is only going to match:
> > >>>> 
> > >>>> static Logger log = LogManager.getLogger(HelloWorld.class.getName());
> > >>>> 
> > >>>> if the class in unpackaged, which it looks it is based on this paste 
> > >>>> but
> > >>> I
> > >>>> want to double check that you did not omit anything from the example.
> > >>>> 
> > >>>> Are you using the latest version (2.3)?.
> > >>>> 
> > >>>> I just added this test the other day to Git master:
> > >>>> 
> > >>>> org.apache.logging.log4j.core.CustomLevelsTest
> > >>>> 
> > >>>> And it shows that we can configure custom levels from a file and see 
> > >>>> them
> > >>>> in code.
> > >>>> 
> > >>>> So I am puzzled here.
> > >>>> 
> > >>>> You could try the latest from Git master as well but I do not recall 
> > >>>> any
> > >>>> fixes in this area.
> > >>>> 
> > >>>> I wonder if the Appenders are processed by the configuration _before_ 
> > >>>> the
> > >>>> custom levels...
> > >>>> 
> > >>>> Gary
> > >>>> 
> > >>>> 
> > >>>> On Wed, Aug 26, 2015 at 11: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
> > >>>>> 
> > >>>>> 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> --
> > >>>> 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
> > >>> 
> > >>> 
> > >> 
> > >> 
> > >> 
> > >> -- 
> > >> 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
> > 
>                                         
                                          

Reply via email to