[ 
https://issues.apache.org/jira/browse/MNG-8086?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Osipov closed MNG-8086.
-------------------------------
    Resolution: Information Provided

> Maven no longer initializes logging configuration based on java.util.logging 
> config file
> ----------------------------------------------------------------------------------------
>
>                 Key: MNG-8086
>                 URL: https://issues.apache.org/jira/browse/MNG-8086
>             Project: Maven
>          Issue Type: Bug
>    Affects Versions: 4.0.0-alpha-12
>            Reporter: Iurii Ignatko
>            Priority: Major
>
> h3. Bug description and the root cause
> When supplying the logging configuration to the Maven build using 
> {{{}-Djava.util.logging.config.file{}}}, it is no longer propagated to the 
> logger.
> This started when the [following 
> PR|https://github.com/apache/maven/pull/1279] was merged. The reason is [this 
> line 
> |https://github.com/apache/maven/blob/003a5bc06daa6e74c98e4d8ab45c6643a6844975/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java#L191]
>  in the constructor and as a connected change, [this  
> initialization|https://github.com/apache/maven/blob/a5ea944c993d8c087b3d38fdaea55815e668e550/maven-jline/src/main/java/org/apache/maven/jline/MessageUtils.java#L37]
>  in {{org.apache.maven.jline.MessageUtils}}. 
> The root cause of the issue lies in the fact that any instance of 
> {{org.jline.utils.StyleResolver}} 
> [triggers|https://github.com/jline/jline3/blob/19c031c0bccaeea6a4346bc82c04c7bd3ec18888/terminal/src/main/java/org/jline/utils/StyleResolver.java#L27]
>  the {{java.util.logging.Logger}} initialization. This process happens before 
> MavenCli's 
> [doMain|https://github.com/apache/maven/blob/003a5bc06daa6e74c98e4d8ab45c6643a6844975/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java#L273]
>  method is invoked, which 
> [populates|https://github.com/apache/maven/blob/003a5bc06daa6e74c98e4d8ab45c6643a6844975/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java#L614]
>  the system properties the logging initializer uses.
> Before the migration to JLine, Jansi's JansiMessageBuilderFactory didn't have 
> any logger initialization logic (neither by itself nor by any auxiliary 
> components created when that library was used). Hence, the system properties 
> were all set by the time any logger was found, as that used to happen 
> somewhere later in the lifecycle.
> h3. Reproducer
> The issue can be easily reproduced by supplying the following logging 
> configuration to any Maven build:
> {code:java}
> handlers=java.util.logging.ConsoleHandler
> .level=FINE
> java.util.logging.ConsoleHandler.level=FINE
> java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter{code}
> When built with Maven version 4.0.0-alpha-10 (or any prior version), note the 
> amount of FINE level logs that are being printed.
> Starting from 4.0.0-alpha-12, those log entries are not printed anymore.
> h3. Solution
> The issue can be fixed in multiple ways:
>  # Reorganize object creation in Maven such that the logger initialization 
> happens after system properties are set.
>  # Change in JLine's {{org.jline.utils.StyleResolver}} 
>  # Some combination of both.
> I was able to do a quick fix using Option (1) as a PoC solution. A proper 
> fix, however, is something to decide upon.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to