[
https://issues.apache.org/jira/browse/LOG4J2-3031?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Caleb Cushing updated LOG4J2-3031:
----------------------------------
Description:
I've had nothing but problems trying to get the code configuration working. I
hate the `ConfigurationBuilder` API, it's easier to get wrong, but I couldn't
get the "Modifying the Current Configuration after Initialization" API working.
I wish that one would support all the same initial configuration use case
(feature, I can write a separate ticket if you want).
First, there's this question https://stackoverflow.com/q/65194471/206466
```java
private static void configureLog4j(Level rootLevel, Map<String, Level>
levelMap) {
var pattern = PatternLayout.newBuilder().withPattern( "%highlight{[%t]
%-5level: %msg%n%throwable}\n" ).build();
var console = ConsoleAppender.createDefaultAppenderForLayout( pattern );
var config = LoggerContext.getContext().getConfiguration();
config.addAppender( console );
var root = config.getRootLogger();
for ( var appenderRef : root.getAppenderRefs() ) {
root.removeAppender( appenderRef.getRef() );
}
root.addAppender( console, rootLevel, null );
Configurator.setRootLevel( rootLevel );
Configurator.setLevel( levelMap );
Configurator.reconfigure(config);
}
```
ended up using the other API and it worked, though I would much rather use this
one, as it doesn't require stringy representations.
Next, I tried setting up a `patternSelector` for the root appender in another
project using the `ConfigurationBuilder`, I had no luck figuring that out, it
simply seemed not to use what I put in. Is this maybe a bug? I can add code for
what I tried here later.
P.S. I want you to know about [this
bug](https://github.com/gradle/gradle/issues/16366), but I doubt it belongs to
log4j, but maybe you know something.
Issue Type: Improvement (was: Bug)
Summary: Doc/Bug?/Feature: code configuration better (was: code
configuration woes)
> Doc/Bug?/Feature: code configuration better
> -------------------------------------------
>
> Key: LOG4J2-3031
> URL: https://issues.apache.org/jira/browse/LOG4J2-3031
> Project: Log4j 2
> Issue Type: Improvement
> Reporter: Caleb Cushing
> Priority: Major
>
> I've had nothing but problems trying to get the code configuration working. I
> hate the `ConfigurationBuilder` API, it's easier to get wrong, but I couldn't
> get the "Modifying the Current Configuration after Initialization" API
> working. I wish that one would support all the same initial configuration use
> case (feature, I can write a separate ticket if you want).
> First, there's this question https://stackoverflow.com/q/65194471/206466
> ```java
> private static void configureLog4j(Level rootLevel, Map<String, Level>
> levelMap) {
> var pattern = PatternLayout.newBuilder().withPattern( "%highlight{[%t]
> %-5level: %msg%n%throwable}\n" ).build();
> var console = ConsoleAppender.createDefaultAppenderForLayout( pattern );
> var config = LoggerContext.getContext().getConfiguration();
> config.addAppender( console );
> var root = config.getRootLogger();
> for ( var appenderRef : root.getAppenderRefs() ) {
> root.removeAppender( appenderRef.getRef() );
> }
> root.addAppender( console, rootLevel, null );
> Configurator.setRootLevel( rootLevel );
> Configurator.setLevel( levelMap );
> Configurator.reconfigure(config);
> }
> ```
> ended up using the other API and it worked, though I would much rather use
> this one, as it doesn't require stringy representations.
> Next, I tried setting up a `patternSelector` for the root appender in another
> project using the `ConfigurationBuilder`, I had no luck figuring that out, it
> simply seemed not to use what I put in. Is this maybe a bug? I can add code
> for what I tried here later.
> P.S. I want you to know about [this
> bug](https://github.com/gradle/gradle/issues/16366), but I doubt it belongs
> to log4j, but maybe you know something.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)