Does any of this belong in the 'extending log4j' section of the manual? The Javadoc?
Gary On Fri, Aug 2, 2013 at 8:30 AM, Christian Grobmeier <[email protected]>wrote: > Hi, > > I looked at it (Simone provided me a patch with the current state of work). > > You need to override this in the OnamiConfigurationFactory: > > @Override > public Configuration getConfiguration(final String name, final URI > configLocation) { > return getConfiguration(null); > } > > The problem is that you need a configLocation otherwise you will be > returned null which causes the NPE: > > LoggerContext line 369 in beta-8: > final Configuration instance = > ConfigurationFactory.getInstance().getConfiguration(name, > configLocation) > > This is of course unfortunate. I have debugged the whole configuration > and think its very difficult > to programmatically configure log4j without using a xml/json file. If > we have a chance to make configuration easier, > we should do it. > > Others: are there any plans / ideas for it already? > > Cheers > Christian > > > On Fri, Aug 2, 2013 at 10:52 AM, Simone Tripodi > <[email protected]> wrote: > > Hi all mates, > > > > I am trying to setup log4j2 configuration programmatically, I defined > > my version of Configuration: > > > > > +------------------------------------------------------------------------------------------------------------------------------------+ > > class MyLoggingConfiguration > > extends BaseConfiguration > > { > > > > private final String levelName; > > > > private final String pattern; > > > > public MyLoggingConfiguration( String levelName, String pattern ) > > { > > this.levelName = levelName; > > this.pattern = pattern; > > } > > > > @Override > > protected void doConfigure() > > { > > setName( "my" ); > > > > Layout<? extends Serializable> layout = createLayout( pattern, > > null, null, null, null ); > > Appender<? extends Serializable> appender = createAppender( > > layout, null, "SYSTEM_OUT", "Console", "false", "true" ); > > appender.start(); > > addAppender( appender ); > > getRootLogger().addAppender( appender, null, null ); > > > > Level level = Level.valueOf( levelName ); > > getRootLogger().setLevel( level ); > > } > > > > } > > > +------------------------------------------------------------------------------------------------------------------------------------+ > > > > and ConfigurationFactory: > > > > > +------------------------------------------------------------------------------------------------------------------------------------+ > > class MyConfigurationFactory > > extends ConfigurationFactory > > { > > > > private final String levelName; > > > > private final String pattern; > > > > public MyConfigurationFactory( String levelName, String pattern ) > > { > > this.levelName = levelName; > > this.pattern = pattern; > > } > > > > @Override > > protected String[] getSupportedTypes() > > { > > return new String[] { "*" }; > > } > > > > @Override > > public Configuration getConfiguration( ConfigurationSource source ) > > { > > return new MyLoggingConfiguration( levelName, pattern ); > > } > > > > } > > > +------------------------------------------------------------------------------------------------------------------------------------+ > > > > then, as specified in the Javadoc, invoke > > ConfigurationFactory#setConfigurationFactory(new > > MyConfigurationFactory("INFO", "[%level] %message%n")) before any > > other calls to Log4j, but when my application starts, an exception is > > thrown: > > > > > +------------------------------------------------------------------------------------------------------------------------------------+ > > Exception in thread "main" java.lang.NullPointerException: No > > Configuration was provided > > at > org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:323) > > at > org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:370) > > at > org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:149) > > at > org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:85) > > at > org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:34) > > at > org.apache.logging.log4j.LogManager.getLogger(LogManager.java:364) > > at > org.apache.logging.log4j.LogManager.getLogger(LogManager.java:319) > > ... > > > +------------------------------------------------------------------------------------------------------------------------------------+ > > > > What am I doing wrong? > > Many thanks in advance, all the best! > > -Simo > > > > http://people.apache.org/~simonetripodi/ > > http://twitter.com/simonetripodi > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > > > > > -- > http://www.grobmeier.de > https://www.timeandbill.de > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > -- E-Mail: [email protected] | [email protected] 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
