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]

Reply via email to