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]