Sebastian created LOG4J2-2486:
---------------------------------
Summary: 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
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
(v7.6.3#76005)