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