On Wed, Aug 26, 2015 at 11:46 AM, Gary Gregory <garydgreg...@gmail.com> wrote:
> 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... > My above suspicion was unfounded, see my new test org.apache.logging.log4j.core.CustomLevelsWithFiltersTest and feel free to provide a patch to test your desired behavior. This might be a tall order if you are a true Java newbie ;-) Gary > > 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