diff --git a/log4j-nashorn-test/pom.xml b/log4j-nashorn-test/pom.xml
new file mode 100644
index 0000000..abb03c2
--- /dev/null
+++ b/log4j-nashorn-test/pom.xml
@@ -0,0 +1,186 @@
+
+
+
+ 4.0.0
+
+ org.apache.logging.log4j.samples
+ log4j-samples
+ ${revision}
+
+
+ log4j-nashorn-test
+ Apache Log4j Samples: Nashorn script
+
+
+ true
+
+ 15.6
+
+
+
+
+
+ org.apache.logging.log4j
+ log4j-api
+ test
+
+
+
+ org.apache.logging.log4j
+ log4j-core
+ test
+
+
+
+ org.apache.logging.log4j
+ log4j-api-test
+ test
+
+
+ org.hamcrest
+ hamcrest
+
+
+ junit
+ junit
+
+
+ org.junit-pioneer
+ junit-pioneer
+
+
+ org.junit.platform
+ junit-platform-commons
+
+
+ org.apache.maven
+ maven-core
+
+
+ org.apache.maven
+ maven-model
+
+
+ org.codehaus.plexus
+ plexus-utils
+
+
+ org.mockito
+ mockito-core
+
+
+
+
+
+
+ org.apache.logging.log4j
+ log4j-core-test
+ test
+
+
+ org.awaitility
+ awaitility
+
+
+ org.hamcrest
+ hamcrest
+
+
+ com.google.code.java-allocation-instrumenter
+ java-allocation-instrumenter
+
+
+ junit
+ junit
+
+
+ org.junit.platform
+ junit-platform-commons
+
+
+ org.springframework
+ spring-test
+
+
+
+
+
+ org.apache.logging.log4j
+ log4j-jul
+ test
+
+
+
+ org.assertj
+ assertj-core
+ test
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ test
+
+
+
+ org.openjdk.nashorn
+ nashorn-core
+ ${nashorn.version}
+ test
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ default-testCompile
+
+ true
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ default-test
+
+ --add-opens org.apache.logging.log4j.core.test/org.apache.logging.log4j.core.test.appender=org.apache.logging.log4j.core
+
+ org.apache.logging.log4j.jul.LogManager
+ javascript
+
+ true
+
+
+
+
+
+
+
+
+
diff --git a/log4j-nashorn-test/src/test/java/module-info.java b/log4j-nashorn-test/src/test/java/module-info.java
new file mode 100644
index 0000000..ee669df
--- /dev/null
+++ b/log4j-nashorn-test/src/test/java/module-info.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+module org.apache.logging.log4j.samples.nashorn {
+ requires java.base;
+ // requires java.scripting;
+ // Log4j modules
+ requires org.apache.logging.log4j;
+ requires org.apache.logging.log4j.core;
+ requires org.apache.logging.log4j.core.test;
+ // Testing modules
+ requires org.junit.jupiter.api;
+ requires org.assertj.core;
+ // Open to JUnit 5
+ opens org.apache.logging.log4j.samples.nashorn to
+ org.junit.platform.commons;
+}
diff --git a/log4j-nashorn-test/src/test/java/org/apache/logging/log4j/samples/nashorn/ScriptFilterTest.java b/log4j-nashorn-test/src/test/java/org/apache/logging/log4j/samples/nashorn/ScriptFilterTest.java
new file mode 100644
index 0000000..2365797
--- /dev/null
+++ b/log4j-nashorn-test/src/test/java/org/apache/logging/log4j/samples/nashorn/ScriptFilterTest.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.logging.log4j.samples.nashorn;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+import java.net.URI;
+import java.util.Objects;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.MarkerManager;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.test.appender.ListAppender;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
+import org.junit.jupiter.api.Timeout.ThreadMode;
+
+class ScriptFilterTest {
+
+ @Test
+ @Timeout(value = 10, threadMode = ThreadMode.SEPARATE_THREAD)
+ void workingScriptFilter() throws Exception {
+ URI configLocation = Objects.requireNonNull(ScriptFilterTest.class.getResource("/ScriptFilterTest.xml"))
+ .toURI();
+ LoggerContext context =
+ (LoggerContext) LogManager.getContext(ScriptFilterTest.class.getClassLoader(), false, configLocation);
+ // Get logger and appender
+ ListAppender appender = context.getConfiguration().getAppender("LIST");
+ assertNotNull(appender);
+ appender.clear();
+ Logger logger = context.getLogger(ScriptFilterTest.class);
+ // Log some events
+ logger.info("No marker");
+ logger.info(MarkerManager.getMarker("AUDIT"), "AUDIT");
+ logger.info(MarkerManager.getMarker("DENY"), "DENY");
+ assertThat(appender.getMessages()).containsExactly("No marker", "AUDIT");
+ }
+}
diff --git a/log4j-nashorn-test/src/test/resources/ScriptFilterTest.xml b/log4j-nashorn-test/src/test/resources/ScriptFilterTest.xml
new file mode 100644
index 0000000..6ac5d7d
--- /dev/null
+++ b/log4j-nashorn-test/src/test/resources/ScriptFilterTest.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pom.xml b/pom.xml
index 04d06ba..b3f5241 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,6 +42,7 @@
log4j-samples-flume-remote
log4j-samples-jlink
log4j-samples-loggerProperties
+ log4j-nashorn-test
log4j-samples-parser