RFR: 8301627: System.exit and Runtime.exit debug logging

Daniel Fuchs dfuchs at openjdk.org
Mon Feb 13 11:06:30 UTC 2023


On Sun, 12 Feb 2023 18:15:25 GMT, Alan Bateman <alanb at openjdk.org> wrote:

>> It can be difficult to find the cause of calls to `java.lang.System.exit(status)` and `Runtime.exit(status)` because the Java runtime exits.
>> The status value and stack trace are logged using the System Logger named `java.lang.Runtime` with message level `System.Logger.Level.DEBUG`.
>
> src/java.base/share/classes/java/lang/Shutdown.java line 162:
> 
>> 160:      * If the system logger {@code java.lang.Runtime} is enabled for logging level DEBUG/FINE
>> 161:      * the stack trace of the call to {@code Runtime.exit()} or {@code System.exit()}
>> 162:      * is logged.
> 
> Shutdown is not a public class so this impNote won't appear in the APIs docs. Should it move to Runtime.exit and System.exit?  If it moved to a public API then "system logger" could link to System.Logger. Also would it be more correct to say "a system logger named "java.lang.Runtime" is enabled for logging levels DEBUG or FINE"?

FINE is not a level supported by the System.Logger, it is the level to which DEBUG is mapped when the backend is java.util.logging. I suggest to remove FINE from this description and add an `{@link Loger.Level#DEBUG DEBUG}` around DEBUG.

> test/jdk/java/lang/runtime/RuntimeExitLogTest.java line 89:
> 
>> 87:         }
>> 88:         cmd.add(this.getClass().getName());
>> 89:         cmd.add(Integer.toString(status));
> 
> Another possibility for testing this is to launch with ` --limit-modules java.base -Djdk.system.logger.level=DEBUG` to use the simple console implementation that is in java.base and avoid needing properties files for j.u.logging. Just mentioning is an option to make it simple.

Good point - though maybe both configurations should be tested. The j.u.l.LogManager registers some shutdown hook so I believe it's important to test with j.u.l present too.

-------------

PR: https://git.openjdk.org/jdk/pull/12517


More information about the core-libs-dev mailing list