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