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