If you are trying to ensure that specific events are always logged I would recommend you: 1. Create a class that extends XMLConfiguration. 2. Override the start() method. 3. Call super.start() in the start method. 4. Create a global filter that accepts the events you always want logged. 5. start the filter. 6. Add the filter to the configuration.
You do not need to override the stop method as the filter will be stopped when the whole configuration is stopped. Ralph > On Aug 29, 2015, at 9:48 PM, Ralph Goers <ralph.go...@dslextreme.com> wrote: > > Ok, but then OFF wouldn’t mean OFF. > > Ralph > >> On Aug 29, 2015, at 9:41 PM, Nicholas Duane <nic...@msn.com> wrote: >> >> Ideally that I couldn't turn it off. >> Thanks,Nick >> >> -------- Original message -------- >> From: Ralph Goers <ralph.go...@dslextreme.com> >> Date: 08/29/2015 9:51 PM (GMT-07:00) >> To: Log4J Users List <log4j-user@logging.apache.org> >> Subject: Re: custom levels via configuration >> >> OFF has a value of 0. What would it mean to have a value less than that? >> >> Ralph >> >>> On Aug 29, 2015, at 7:22 PM, Nicholas Duane <nic...@msn.com> wrote: >>> >>> 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 >>>>> >>>> >>> >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org >> For additional commands, e-mail: log4j-user-h...@logging.apache.org >> > --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-user-h...@logging.apache.org