I think I have pulled it out: after doing a configuration.start(),
configuration.getAppenders().values().iterator().next().getLayout() does
the trick. Even though I did not specify an appender, the configuration
creates a default ConsoleAppender using the layout I have provided. Matt,
do you know the magic going on here?

On Fri, Dec 3, 2021 at 11:24 PM Matt Sicker <[email protected]> wrote:

> I don't think that's possible in the current plugin system without
> copying a bunch of code from AbstractConfiguration or similar. The
> code for translating configurations into objects works starting from
> the root configuration object. Ideally, the next gen plugin system
> will be able to support something along the lines of what you're
> asking for, though (i.e., being more of a generic way of configuring
> beans rather than being purely tied to a log4j configuration).
>
> On Fri, Dec 3, 2021 at 3:23 PM Volkan Yazıcı <[email protected]> wrote:
> >
> > Given a JSON snippet for configuring a layout, how can I instantiate the
> > layout class itself? I have tried the following, which "runs" without a
> > failure, but couldn't access to a layout:
> >
> > LoggerContext context = (LoggerContext) LogManager.getContext();
> > ConfigurationSource configSource =
> >         new ConfigurationSource(
> >                 new ByteArrayInputStream(
> >                         ("{'PatternLayout': {'MarkerPatternSelector': {"
> +
> >                                 "'defaultPattern': '%m%n', " +
> >                                 "'PatternMatch': {'key': 'FLOW',
> > 'pattern': '===%m===%n'}" +
> >                                 "}}}")
> >                                 .replaceAll("'", "\"")
> >                                 .getBytes(StandardCharsets.UTF_8)));
> > JsonConfiguration configuration = new JsonConfiguration(context,
> configSource);
> >
> > Eventually I want to obtain a Layout<?> instance. Any ideas?
>

Reply via email to