Uploaded image for project: 'Log4j 2'
  1. Log4j 2
  2. LOG4J2-2486

AbstractConfiguration - Allow to disable ScriptManager

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: 2.11.1
    • Fix Version/s: None
    • Component/s: Configurators, Core
    • Labels:
      None

      Description

      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:

          @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);
              }
              // ...
      

      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:

      void setEnableScriptingManager( boolean enableScriptingManager );
      

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              SebastiansAccount Sebastian
            • Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated: