You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Ralph Goers (Jira)" <ji...@apache.org> on 2022/02/05 19:55:00 UTC

[jira] [Assigned] (LOG4J2-2486) AbstractConfiguration - Allow to disable ScriptManager

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

Ralph Goers reassigned LOG4J2-2486:
-----------------------------------

    Assignee: Ralph Goers

> AbstractConfiguration - Allow to disable ScriptManager
> ------------------------------------------------------
>
>                 Key: LOG4J2-2486
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-2486
>             Project: Log4j 2
>          Issue Type: Improvement
>          Components: Configurators, Core
>    Affects Versions: 2.11.1
>            Reporter: Sebastian
>            Assignee: Ralph Goers
>            Priority: Minor
>
> I don't use any of the scripting features. Nevertheless, these are always initialized when Log4j2 is initialized (see AbstractConfiguration -> initialize method). Although the component seems to be optional (see below). Therefore I'd wish there was an option to disable this feature.
> At the moment, the initialize method will always _try_ to instantiate ScriptManager. As the ScriptEngineManager used inside is not available on Android (see issue LOG4J2-1920), this initialization is fault-tolerant using try-catch: If it's not available, just leave the member "scriptManager" null and avoid to use it later in the code (null checks). So Log4j2 seems to work without this as well. See the relevant initialization code snippet from AbstractConfiguration:
> {code:java}
>     @Override
>     public void initialize() {
>         LOGGER.debug(Version.getProductString() + " initializing configuration {}", this);
>         subst.setConfiguration(this);
>         try {
>             scriptManager = new ScriptManager(this, watchManager);
>         } catch (final LinkageError | Exception e) {
>             // LOG4J2-1920 ScriptEngineManager is not available in Android
>             LOGGER.info("Cannot initialize scripting support because this JRE does not support it.", e);
>         }
>         // ...
> {code}
> I'd like to be able to use Log4j2 without having it initialize the ScriptManager mandatorily.
> So it would be nice if I could enforce the scripting-less Android mode. ;)
> As I use programmatic configuration using the builder, a setter in the ConfigurationBuilder would be great! Example:
> {code:java}
> void setEnableScriptingManager( boolean enableScriptingManager );
> {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)