You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by mi...@apache.org on 2016/10/17 11:19:07 UTC
[1/9] logging-log4j2 git commit: LOG4J2-1623 Configurable JVM
shutdown hook timeout
Repository: logging-log4j2
Updated Branches:
refs/heads/master 197997ac3 -> 19418b37d
LOG4J2-1623 Configurable JVM shutdown hook timeout
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/705e2725
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/705e2725
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/705e2725
Branch: refs/heads/master
Commit: 705e27253ca14cdf0e50039cada041065e308aee
Parents: 3176c96
Author: Mikael St�ldal <mi...@magine.com>
Authored: Mon Oct 3 18:54:27 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Mon Oct 3 18:54:27 2016 +0200
----------------------------------------------------------------------
.../logging/log4j/core/LoggerContext.java | 9 ++--
.../core/config/AbstractConfiguration.java | 10 +++++
.../log4j/core/config/Configuration.java | 2 +
.../builder/api/ConfigurationBuilder.java | 7 ++++
.../config/builder/impl/BuiltConfiguration.java | 4 ++
.../impl/DefaultConfigurationBuilder.java | 14 +++++++
.../composite/CompositeConfiguration.java | 2 +
.../core/config/json/JsonConfiguration.java | 9 ++--
.../PropertiesConfigurationBuilder.java | 3 ++
.../log4j/core/config/xml/XmlConfiguration.java | 3 +-
.../core/ShutdownTimeoutConfigurationTest.java | 44 ++++++++++++++++++++
.../builder/ConfigurationBuilderTest.java | 5 ++-
.../resources/log4j-test-shutdownTimeout.xml | 38 +++++++++++++++++
src/changes/changes.xml | 5 +++
src/site/xdoc/manual/configuration.xml.vm | 8 +++-
15 files changed, 151 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
index 7e13963..c964965 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
@@ -16,8 +16,6 @@
*/
package org.apache.logging.log4j.core;
-import static org.apache.logging.log4j.core.util.ShutdownCallbackRegistry.SHUTDOWN_HOOK_MARKER;
-
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
@@ -38,7 +36,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.core.config.ConfigurationListener;
-import org.apache.logging.log4j.core.config.ConfigurationSource; // SUPPRESS CHECKSTYLE
+import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.config.DefaultConfiguration;
import org.apache.logging.log4j.core.config.NullConfiguration;
import org.apache.logging.log4j.core.config.Reconfigurable;
@@ -56,6 +54,8 @@ import org.apache.logging.log4j.spi.LoggerRegistry;
import org.apache.logging.log4j.spi.Terminable;
import org.apache.logging.log4j.util.PropertiesUtil;
+import static org.apache.logging.log4j.core.util.ShutdownCallbackRegistry.SHUTDOWN_HOOK_MARKER;
+
/**
* The LoggerContext is the anchor for the logging system. It maintains a list of all the loggers requested by
* applications and a reference to the Configuration. The Configuration will contain the configured loggers, appenders,
@@ -265,6 +265,7 @@ public class LoggerContext extends AbstractLifeCycle
if (factory instanceof ShutdownCallbackRegistry) {
LOGGER.debug(SHUTDOWN_HOOK_MARKER, "Shutdown hook enabled. Registering a new one.");
try {
+ final long shutdownTimeoutMillis = this.configuration.getShutdownTimeoutMillis();
this.shutdownCallback = ((ShutdownCallbackRegistry) factory).addShutdownCallback(new Runnable() {
@Override
public void run() {
@@ -272,7 +273,7 @@ public class LoggerContext extends AbstractLifeCycle
final LoggerContext context = LoggerContext.this;
LOGGER.debug(SHUTDOWN_HOOK_MARKER, "Stopping LoggerContext[name={}, {}]",
context.getName(), context);
- context.stop();
+ context.stop(shutdownTimeoutMillis, TimeUnit.MILLISECONDS);
}
@Override
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
index c740b8c..3a6a58e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
@@ -102,6 +102,11 @@ public abstract class AbstractConfiguration extends AbstractFilterable implement
protected boolean isShutdownHookEnabled = true;
/**
+ * Shutdown timeout in milliseconds.
+ */
+ protected long shutdownTimeoutMillis = 0;
+
+ /**
* The Script manager.
*/
protected ScriptManager scriptManager;
@@ -395,6 +400,11 @@ public abstract class AbstractConfiguration extends AbstractFilterable implement
return isShutdownHookEnabled;
}
+ @Override
+ public long getShutdownTimeoutMillis() {
+ return shutdownTimeoutMillis;
+ }
+
public void setup() {
// default does nothing, subclasses do work.
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java
index 1a55b48..95e6edc 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java
@@ -128,6 +128,8 @@ public interface Configuration extends Filterable {
boolean isShutdownHookEnabled();
+ long getShutdownTimeoutMillis();
+
ConfigurationScheduler getScheduler();
/**
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java
index 4dc9b69..b115651 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java
@@ -18,6 +18,7 @@ package org.apache.logging.log4j.core.config.builder.api;
import java.io.IOException;
import java.io.OutputStream;
+import java.util.concurrent.TimeUnit;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.Filter;
@@ -367,6 +368,12 @@ public interface ConfigurationBuilder<T extends Configuration> extends Builder<T
*/
ConfigurationBuilder<T> setShutdownHook(String flag);
+ /**
+ * Specifies how long time appenders and other plugins will get to shutdown when the JVM shuts down.
+ * Default is zero. (Not used if {@link #setShutdownHook(String)} is set to "disable".)
+ * @return this builder instance.
+ */
+ ConfigurationBuilder<T> setShutdownTimeout(long timeout, TimeUnit timeUnit);
/**
* Sets the level of the StatusLogger.
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
index aa7761c..c241dfb 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
@@ -147,6 +147,10 @@ public class BuiltConfiguration extends AbstractConfiguration {
isShutdownHookEnabled = !"disable".equalsIgnoreCase(flag);
}
+ public void setShutdownTimeoutMillis(long shutdownTimeoutMillis) {
+ this.shutdownTimeoutMillis = shutdownTimeoutMillis;
+ }
+
public void setMonitorInterval(final int intervalSeconds) {
if (this instanceof Reconfigurable && intervalSeconds > 0) {
final ConfigurationSource configSource = getConfigurationSource();
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
index d8531d6..183094d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
@@ -22,6 +22,7 @@ import java.io.StringWriter;
import java.lang.reflect.Constructor;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.TimeUnit;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
@@ -71,6 +72,7 @@ public class DefaultConfigurationBuilder<T extends BuiltConfiguration> implement
private String destination;
private String packages;
private String shutdownFlag;
+ private long shutdownTimeoutMillis;
private String advertiser;
private LoggerContext loggerContext;
private String name;
@@ -186,6 +188,9 @@ public class DefaultConfigurationBuilder<T extends BuiltConfiguration> implement
if (shutdownFlag != null) {
configuration.setShutdownHook(shutdownFlag);
}
+ if (shutdownTimeoutMillis > 0) {
+ configuration.setShutdownTimeoutMillis(shutdownTimeoutMillis);
+ }
if (advertiser != null) {
configuration.createAdvertiser(advertiser, source);
}
@@ -249,6 +254,9 @@ public class DefaultConfigurationBuilder<T extends BuiltConfiguration> implement
if (shutdownFlag != null) {
xmlWriter.writeAttribute("shutdownHook", shutdownFlag);
}
+ if (shutdownTimeoutMillis > 0) {
+ xmlWriter.writeAttribute("shutdownTimeout", String.valueOf(shutdownTimeoutMillis));
+ }
if (advertiser != null) {
xmlWriter.writeAttribute("advertiser", advertiser);
}
@@ -514,6 +522,12 @@ public class DefaultConfigurationBuilder<T extends BuiltConfiguration> implement
}
@Override
+ public ConfigurationBuilder<T> setShutdownTimeout(final long timeout, final TimeUnit timeUnit) {
+ this.shutdownTimeoutMillis = timeUnit.toMillis(timeout);
+ return this;
+ }
+
+ @Override
public ConfigurationBuilder<T> setStatusLevel(final Level level) {
this.level = level;
return this;
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java
index fa941d7..e38c62b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java
@@ -87,6 +87,8 @@ public class CompositeConfiguration extends AbstractConfiguration implements Rec
statusConfig.withDestination(value);
} else if ("shutdownHook".equalsIgnoreCase(key)) {
isShutdownHookEnabled = !"disable".equalsIgnoreCase(value);
+ } else if ("shutdownTimeout".equalsIgnoreCase(key)) {
+ shutdownTimeoutMillis = Long.parseLong(value);
} else if ("verbose".equalsIgnoreCase(key)) {
statusConfig.withVerbosity(value);
} else if ("packages".equalsIgnoreCase(key)) {
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
index 497496a..5b38dfb 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
@@ -26,6 +26,9 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.AbstractConfiguration;
import org.apache.logging.log4j.core.config.Configuration;
@@ -40,10 +43,6 @@ import org.apache.logging.log4j.core.config.status.StatusConfiguration;
import org.apache.logging.log4j.core.util.FileWatcher;
import org.apache.logging.log4j.core.util.Patterns;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
/**
* Creates a Node hierarchy from a JSON file.
*/
@@ -81,6 +80,8 @@ public class JsonConfiguration extends AbstractConfiguration implements Reconfig
statusConfig.withDestination(value);
} else if ("shutdownHook".equalsIgnoreCase(key)) {
isShutdownHookEnabled = !"disable".equalsIgnoreCase(value);
+ } else if ("shutdownTimeout".equalsIgnoreCase(key)) {
+ shutdownTimeoutMillis = Long.parseLong(value);
} else if ("verbose".equalsIgnoreCase(entry.getKey())) {
statusConfig.withVerbosity(value);
} else if ("packages".equalsIgnoreCase(key)) {
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
index a4362b7..3d24a9b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
@@ -19,6 +19,7 @@ package org.apache.logging.log4j.core.config.properties;
import java.util.Map;
import java.util.Properties;
+import java.util.concurrent.TimeUnit;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.Appender;
@@ -54,6 +55,7 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory
private static final String ADVERTISER_KEY = "advertiser";
private static final String STATUS_KEY = "status";
private static final String SHUTDOWN_HOOK = "shutdownHook";
+ private static final String SHUTDOWN_TIMEOUT = "shutdownTimeout";
private static final String VERBOSE = "verbose";
private static final String DEST = "dest";
private static final String PACKAGES = "packages";
@@ -89,6 +91,7 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory
builder
.setStatusLevel(Level.toLevel(rootProperties.getProperty(STATUS_KEY), Level.ERROR))
.setShutdownHook(rootProperties.getProperty(SHUTDOWN_HOOK))
+ .setShutdownTimeout(Long.parseLong(rootProperties.getProperty(SHUTDOWN_TIMEOUT, "0")), TimeUnit.MILLISECONDS)
.setVerbosity(rootProperties.getProperty(VERBOSE))
.setDestination(rootProperties.getProperty(DEST))
.setPackages(rootProperties.getProperty(PACKAGES))
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
index 2608552..51f31d4 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
@@ -24,7 +24,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
-
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -120,6 +119,8 @@ public class XmlConfiguration extends AbstractConfiguration implements Reconfigu
statusConfig.withDestination(value);
} else if ("shutdownHook".equalsIgnoreCase(key)) {
isShutdownHookEnabled = !"disable".equalsIgnoreCase(value);
+ } else if ("shutdownTimeout".equalsIgnoreCase(key)) {
+ shutdownTimeoutMillis = Long.parseLong(value);
} else if ("verbose".equalsIgnoreCase(key)) {
statusConfig.withVerbosity(value);
} else if ("packages".equalsIgnoreCase(key)) {
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/log4j-core/src/test/java/org/apache/logging/log4j/core/ShutdownTimeoutConfigurationTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ShutdownTimeoutConfigurationTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/ShutdownTimeoutConfigurationTest.java
new file mode 100644
index 0000000..5e0734c
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/ShutdownTimeoutConfigurationTest.java
@@ -0,0 +1,44 @@
+/*
+ * 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.core;
+
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.junit.ClassRule;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ *
+ */
+public class ShutdownTimeoutConfigurationTest {
+
+ private static final String CONFIG = "log4j-test-shutdownTimeout.xml";
+
+ @ClassRule
+ public static LoggerContextRule context = new LoggerContextRule(CONFIG);
+
+ @Test
+ public void testShutdownFlag() {
+ final Configuration config = context.getConfiguration();
+ assertNotNull("No configuration", config);
+ assertEquals(5000, config.getShutdownTimeoutMillis());
+ }
+
+}
+
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java
index 2d48605..431ac01 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java
@@ -16,6 +16,8 @@
*/
package org.apache.logging.log4j.core.config.builder;
+import java.util.concurrent.TimeUnit;
+
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.core.appender.ConsoleAppender;
@@ -36,6 +38,7 @@ public class ConfigurationBuilderTest {
private void addTestFixtures(final String name, final ConfigurationBuilder<BuiltConfiguration> builder) {
builder.setConfigurationName(name);
builder.setStatusLevel(Level.ERROR);
+ builder.setShutdownTimeout(5000, TimeUnit.MILLISECONDS);
builder.add(builder.newScriptFile("target/test-classes/scripts/filter.groovy").addIsWatched(true));
builder.add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.NEUTRAL)
.addAttribute("level", Level.DEBUG));
@@ -56,7 +59,7 @@ public class ConfigurationBuilderTest {
private final static String expectedXml =
"<?xml version='1.0' encoding='UTF-8'?>" + EOL +
- "<Configuration name=\"config name\" status=\"ERROR\" packages=\"foo,bar\">" + EOL +
+ "<Configuration name=\"config name\" status=\"ERROR\" packages=\"foo,bar\" shutdownTimeout=\"5000\">" + EOL +
INDENT + "<Properties>" + EOL +
INDENT + INDENT + "<Property name=\"MyKey\">MyValue</Property>" + EOL +
INDENT + "</Properties>" + EOL +
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/log4j-core/src/test/resources/log4j-test-shutdownTimeout.xml
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/resources/log4j-test-shutdownTimeout.xml b/log4j-core/src/test/resources/log4j-test-shutdownTimeout.xml
new file mode 100644
index 0000000..19b25c9
--- /dev/null
+++ b/log4j-core/src/test/resources/log4j-test-shutdownTimeout.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+
+-->
+<Configuration status="OFF" name="XMLConfigTest" monitorInterval="5" shutdownTimeout="5000">
+ <Appenders>
+ <Console name="STDOUT">
+ <PatternLayout pattern="%m MDC%X%n"/>
+ </Console>
+ <List name="List">
+ </List>
+ </Appenders>
+
+ <Loggers>
+ <Logger name="org.apache.logging.log4j.test1" level="debug" additivity="false">
+ <AppenderRef ref="STDOUT"/>
+ </Logger>>
+
+ <Root level="trace">
+ <AppenderRef ref="List"/>
+ </Root>
+ </Loggers>
+
+</Configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index cd2f379..6bd144c 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -23,6 +23,11 @@
<title>Changes</title>
</properties>
<body>
+ <release version="2.7.1" date="2016-XX-XX" description="GA Release 2.7.1">
+ <action issue="LOG4J2-1623" dev="mikes" type="fix">
+ Configurable JVM shutdown hook timeout.
+ </action>
+ </release>
<release version="2.7" date="2016-10-02" description="GA Release 2.7">
<action issue="LOG4J2-1618" dev="rpopma" type="fix" due-to="Raman Gupta">
Fixed ClassCastException when using JUL logging during shutdown.
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/705e2725/src/site/xdoc/manual/configuration.xml.vm
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/configuration.xml.vm b/src/site/xdoc/manual/configuration.xml.vm
index 60419a4..acd41fd 100644
--- a/src/site/xdoc/manual/configuration.xml.vm
+++ b/src/site/xdoc/manual/configuration.xml.vm
@@ -408,6 +408,10 @@ public class Bar {
shutdown hook is enabled by default but may be disabled by setting this attribute to "disable"</td>
</tr>
<tr>
+ <td>shutdownTimeout</td>
+ <td>Specifies how many milliseconds appenders and other plugins will get to shutdown when the JVM shuts down.
+ Default is zero. (Not used if <tt>shutdownHook</tt> is set to "disable".)</td>
+ <tr>
<td>status</td>
<td>The level of internal Log4j events that should be logged to the console.
Valid values for this attribute are "trace", "debug", "info", "warn", "error" and "fatal".
@@ -841,8 +845,8 @@ public class Bar {
</p>
<p>
Properties configuration files support the advertiser, monitorInterval, name, packages, shutdownHook,
- status, verbose, and dest attrbutes. See <a href="#ConfigurationSyntax">Configuration Syntax</a> for the
- definitions of these attributes.
+ shutdownTimeout, status, verbose, and dest attrbutes. See <a href="#ConfigurationSyntax">Configuration Syntax</a>
+ for the definitions of these attributes.
</p>
<pre class="prettyprint linenums">
status = error
[6/9] logging-log4j2 git commit: Merge branch 'master' into
LOG4J2-1623
Posted by mi...@apache.org.
Merge branch 'master' into LOG4J2-1623
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/3064471e
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/3064471e
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/3064471e
Branch: refs/heads/master
Commit: 3064471eaa1b7f7d3c5e38349281e1ccdd054cfa
Parents: c92c327 2da9dfa
Author: Mikael St�ldal <mi...@magine.com>
Authored: Thu Oct 6 13:29:28 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Thu Oct 6 13:29:28 2016 +0200
----------------------------------------------------------------------
log4j-bom/pom.xml | 4 ----
.../main/java/org/apache/logging/log4j/core/LoggerContext.java | 2 +-
.../java/org/apache/logging/log4j/core/util/CyclicBuffer.java | 4 ++--
.../org/apache/logging/log4j/core/util/ExecutorServices.java | 4 ++--
src/site/site.xml | 1 +
src/site/xdoc/javadoc.xml | 4 ++++
6 files changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3064471e/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
----------------------------------------------------------------------
[7/9] logging-log4j2 git commit: LOG4J2-1623 Fix Javadoc
Posted by mi...@apache.org.
LOG4J2-1623 Fix Javadoc
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/6482da5b
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/6482da5b
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/6482da5b
Branch: refs/heads/master
Commit: 6482da5b325a8d42bc79ade754a1d5b904c6dcea
Parents: 3064471
Author: Mikael St�ldal <mi...@magine.com>
Authored: Thu Oct 6 13:42:17 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Thu Oct 6 13:42:17 2016 +0200
----------------------------------------------------------------------
.../log4j/core/config/builder/api/ConfigurationBuilder.java | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6482da5b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java
index b115651..8141c25 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java
@@ -369,9 +369,14 @@ public interface ConfigurationBuilder<T extends Configuration> extends Builder<T
ConfigurationBuilder<T> setShutdownHook(String flag);
/**
- * Specifies how long time appenders and other plugins will get to shutdown when the JVM shuts down.
- * Default is zero. (Not used if {@link #setShutdownHook(String)} is set to "disable".)
+ * How long appenders and background tasks will get to shutdown when the JVM shuts down.
+ * Default is zero which mean that each appender uses its default timeout, and don't wait for background
+ * tasks. Not all appenders will honor this, it is a hint and not an absolute guarantee that the shutdown
+ * procedure will not take longer. Setting this too low increase the risk of losing outstanding log events
+ * not yet written to the final destination. (Not used if {@link #setShutdownHook(String)} is set to "disable".)
* @return this builder instance.
+ *
+ * @see LoggerContext#stop(long, TimeUnit)
*/
ConfigurationBuilder<T> setShutdownTimeout(long timeout, TimeUnit timeUnit);
[9/9] logging-log4j2 git commit: Merge branch 'master' into
LOG4J2-1623
Posted by mi...@apache.org.
Merge branch 'master' into LOG4J2-1623
# Conflicts:
# src/changes/changes.xml
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/19418b37
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/19418b37
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/19418b37
Branch: refs/heads/master
Commit: 19418b37df948609a8852a17f206076048043f6f
Parents: 6482da5 197997a
Author: Mikael St�ldal <mi...@magine.com>
Authored: Mon Oct 17 13:14:16 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Mon Oct 17 13:14:16 2016 +0200
----------------------------------------------------------------------
.../logging/log4j/util/PropertiesUtil.java | 597 ++++++++++---------
.../log4j/core/appender/AbstractAppender.java | 8 +
.../log4j/core/appender/ConsoleAppender.java | 23 +-
.../core/appender/MemoryMappedFileAppender.java | 2 +-
.../logging/log4j/core/layout/HtmlLayout.java | 81 +--
.../logging/log4j/core/lookup/JndiLookup.java | 5 +-
.../appender/ConsoleAppenderBuilderTest.java | 80 ++-
pom.xml | 2 +-
src/changes/changes.xml | 11 +-
9 files changed, 446 insertions(+), 363 deletions(-)
----------------------------------------------------------------------
[5/9] logging-log4j2 git commit: LOG4J2-1623 Update documentation
Posted by mi...@apache.org.
LOG4J2-1623 Update documentation
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/c92c327c
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/c92c327c
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/c92c327c
Branch: refs/heads/master
Commit: c92c327c3db50ff18d01234c0a427d3ad9869588
Parents: 5564556
Author: Mikael St�ldal <mi...@magine.com>
Authored: Wed Oct 5 15:07:55 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Wed Oct 5 15:07:55 2016 +0200
----------------------------------------------------------------------
.../logging/log4j/core/LoggerContext.java | 21 +++++++++++++-------
.../logging/log4j/core/config/Configurator.java | 13 +++++++-----
src/site/xdoc/manual/configuration.xml.vm | 10 +++++-----
3 files changed, 27 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c92c327c/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
index 2681485..4c759c0 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
@@ -303,15 +303,22 @@ public class LoggerContext extends AbstractLifeCycle
}
/**
- * How many milliseconds appenders and other plugins will get to shutdown.
- *
- * Not all plugins will honor this, it is a hint and not an absolute guarantee that the this method not block longer.
+ * Blocks until all Log4j tasks have completed execution after a shutdown request and all appenders have shut down,
+ * or the timeout occurs, or the current thread is interrupted, whichever happens first.
+ * <p>
+ * Not all appenders will honor this, it is a hint and not an absolute guarantee that the this method not block longer.
* Setting timeout too low increase the risk of losing outstanding log events not yet written to the final
* destination.
- *
- * @param timeout the maximum time to wait, or 0 which mean that each plugin uses its default timeout
- * @param timeUnit the time unit of the timeout argument
- * @return true if the context was stopped cleanly and normally, false otherwise.
+ * <p>
+ * Log4j can start threads to perform certain actions like file rollovers, calling this method with a positive timeout will
+ * block until the rollover thread is done.
+ *
+ * @param timeout the maximum time to wait, or 0 which mean that each apppender uses its default timeout, and don't wait for background
+ tasks
+ * @param timeUnit
+ * the time unit of the timeout argument
+ * @return {@code true} if the logger context terminated and {@code false} if the timeout elapsed before
+ * termination.
* @since 2.7
*/
@Override
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c92c327c/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
index 3da469d..28dd85f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
@@ -346,13 +346,12 @@ public final class Configurator {
}
/**
- * Blocks until all Log4j tasks have completed execution after a shutdown request, or the timeout occurs, or the
- * current thread is interrupted, whichever happens first.
+ * Shuts down the given logger context.
* <p>
- * Log4j can start threads to perform certain actions like file rollovers, calling this method with a timeout will
- * block until the rollover thread is done.
+ * Log4j can start threads to perform certain actions like file rollovers; calling this method with a positive
+ * timeout will block until the rollover thread is done.
* </p>
- *
+ *
* @param ctx
* the logger context to shut down, may be null.
* @param timeout
@@ -361,6 +360,10 @@ public final class Configurator {
* the time unit of the timeout argument
* @return {@code true} if the logger context terminated and {@code false} if the timeout elapsed before
* termination.
+ *
+ * @see LoggerContext#stop(long, TimeUnit)
+ *
+ * @since 2.7
*/
public static boolean shutdown(final LoggerContext ctx, final long timeout, final TimeUnit timeUnit) {
if (ctx != null) {
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c92c327c/src/site/xdoc/manual/configuration.xml.vm
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/configuration.xml.vm b/src/site/xdoc/manual/configuration.xml.vm
index 2b59e8d..2117dd2 100644
--- a/src/site/xdoc/manual/configuration.xml.vm
+++ b/src/site/xdoc/manual/configuration.xml.vm
@@ -409,11 +409,11 @@ public class Bar {
</tr>
<tr>
<td>shutdownTimeout</td>
- <td>Specifies how many milliseconds appenders and other plugins will get to shutdown when the JVM shuts
- down. Default is zero which mean that each plugin uses its default timeout. Not all plugins will honor
- this, it is a hint and not an absolute guarantee that the shutdown procedure will not take longer.
- Setting this too low increase the risk of losing outstanding log events not yet written to the final
- destination. See <a class="javadoc"
+ <td>Specifies how many milliseconds appenders and background tasks will get to shutdown when the JVM shuts
+ down. Default is zero which mean that each appender uses its default timeout, and don't wait for background
+ tasks. Not all appenders will honor this, it is a hint and not an absolute guarantee that the shutdown
+ procedure will not take longer. Setting this too low increase the risk of losing outstanding log events
+ not yet written to the final destination. See <a class="javadoc"
href="../log4j-core/target/site/apidocs/org/apache/logging/log4j/core/LoggerContext.html#stop(long, java.util.concurrent.TimeUnit)">LoggerContext.stop(long, java.util.concurrent.TimeUnit)</a>.
(Not used if <tt>shutdownHook</tt> is set to "disable".)</td>
<tr>
[8/9] logging-log4j2 git commit: Merge branch 'master' into
LOG4J2-1623
Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/19418b37/src/changes/changes.xml
----------------------------------------------------------------------
diff --cc src/changes/changes.xml
index 6bd144c,d935048..2922511
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@@ -1,3090 -1,3096 +1,3099 @@@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set sw=2: -->
-<!--
- 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.
--->
-<document xmlns="http://maven.apache.org/changes/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
- <properties>
- <title>Changes</title>
- </properties>
- <body>
- <release version="2.7.1" date="2016-MM-DD" description="GA Release 2.7.1">
- <action issue="LOG4J2-1636" dev="ggregory" type="fix" due-to="Eldar Gabdullin">
- Console Appender does not pick up Oracle Java 8's sun.stdout.encoding and sun.stderr.encoding.
- </action>
- <action issue="LOG4J2-1639" dev="ggregory" type="fix" due-to="Sridhar Gopinath">
- Fix MemoryMappedFileAppender.createAppender() Javadoc for immediateFlush.
- </action>
- <action issue="LOG4J2-1641" dev="ggregory" type="update">
- Update JeroMQ from 0.3.5 to 0.3.6.
- </action>
- </release>
- <release version="2.7" date="2016-10-02" description="GA Release 2.7">
- <action issue="LOG4J2-1618" dev="rpopma" type="fix" due-to="Raman Gupta">
- Fixed ClassCastException when using JUL logging during shutdown.
- </action>
- <action issue="LOG4J2-1620" dev="ggregory" type="fix" due-to="Sascha Scholz">
- 2.7-rc1: RollingFileAppender immediateFlush default value should be true, not false.
- </action>
- <action issue="LOG4J2-1611" dev="rpopma" type="fix">
- Improved performance of context data injector for web applications to be on par with standalone applications.
- </action>
- <action issue="LOG4J2-1591" dev="rpopma" type="fix">
- Introduced new interface LifeCycle2 with stop(long,TimeUnit) method to avoid breaking backwards compatibility with new Configurator.shutdown(LoggerContext, long, TimeUnit) API.
- </action>
- <action issue="LOG4J2-1590" dev="rpopma" type="fix">
- Fixed issue with filters extending AbstractFilter that did not override methods with unrolled varargs.
- </action>
- <action issue="LOG4J2-1583" dev="rpopma" type="fix" due-to="Larry West">
- Fixed scrambled log messages triggered by nested logging from toString() method of a logging parameter object.
- </action>
- <action issue="LOG4J2-1259" dev="ggregory" type="fix" due-to="Misagh Moayyed, Steffen Offermann">
- Log4j threads are no longer leaking on Tomcat shutdown.
- </action>
- <action issue="LOG4J2-1051" dev="rpopma" type="fix" due-to="Lukasz Lenart">
- When starting on Google App Engine, Interpolator now suppresses the NoClassDefFoundError stack trace for the jvmrunargs lookup.
- </action>
- <action issue="LOG4J2-1582" dev="rpopma" type="fix">
- When initializing on platforms where JMX is not available, Interpolator component no longer prints stack trace for warning messages.
- </action>
- <action issue="LOG4J2-1581" dev="rpopma" type="fix">
- Unregistering JMX components no longer prints a stack trace when the MBean has already been unregistered.
- </action>
- <action issue="LOG4J2-1313" dev="rpopma" type="fix" due-to="Philipp Knobel, Leon Finker">
- Support Property values to be specified in configuration as a value attribute as well as an element.
- </action>
- <action issue="LOG4J2-1575" dev="rpopma" type="fix">
- (GC) LoggerConfig now stores configuration properties in a List, not a Map to prevent creating temporary Iterator objects. Added method LoggerConfig#getPropertyList(), deprecated method #getProperties().
- </action>
- <action issue="LOG4J2-1457" dev="mattsicker" type="fix" due-to="Leon Finker">
- Fixed class loader deadlock when using async logging and extended stack trace pattern.
- </action>
- <action issue="LOG4J2-1563" dev="ggregory" type="fix" due-to="Jason Tedor">
- Fix to prevent Log4j 2.6.2 and higher from losing exceptions when a security manager is present.
- </action>
- <action issue="LOG4J2-1530" dev="mikes" type="fix">
- Fixed issue where LogEvent.getContextStack() returned null.
- </action>
- <action issue="LOG4J2-1518" dev="rpopma" type="fix" due-to="Leon Finker">
- Prevent deadlock in Async Loggers when queue is full and logged Object's toString() logs another message.
- </action>
- <action issue="LOG4J2-1542" dev="rpopma" type="fix" due-to="Rog�rio Lecari�o Leite">
- Prevent ArrayIndexOutOfBoundsException in ParameterizedMessage.formatTo for single-char or empty messages.
- </action>
- <action issue="LOG4J2-1549" dev="mikes" type="fix" due-to="Jason Bedard">
- Fixed issue where AsyncLoggerContextSelector+PropertiesConfigurationBuilder defaulted to includeLocation=true.
- </action>
- <action issue="LOG4J2-1562" dev="ggregory" type="fix">
- Prevent SocketAppender memory usage from growing unbounded if it cannot connect to a server.
- </action>
- <action issue="LOG4J2-1559" dev="ggregory" type="fix" due-to="Andrey Plotkin">
- Prevent NPE in Level.isInRange.
- </action>
- <action issue="LOG4J2-1511" dev="ggregory" type="fix" due-to="Srikanth Surukuntu">
- DynamicThresholdFilter filtered incorrectly when params were passed as individual arguments instead of varargs.
- </action>
- <action issue="LOG4J2-1548" dev="ggregory" type="fix">
- [CronTriggeringPolicy] ConfigurationScheduler scheduled the task infinitely after first fire.
- </action>
- <action issue="LOG4J2-1506" dev="ggregory" type="fix" due-to="Johannes Schleger">
- Log4j should not unregister JMX MBeans when log4j2.disable.jmx property is true.
- </action>
- <action issue="LOG4J2-1490" dev="ggregory" type="fix" due-to="Krzysztof Taborski">
- Log4j2 should postpone creating log file until the appender actually receives an event.
- </action>
- <action issue="LOG4J2-1320" dev="ggregory" type="fix" due-to="Paresh Varke, Pierrick Hymbert">
- Support loading custom plugins from jar files and directories whose classpath entries use the "vfs" URL protocol.
- </action>
- <action issue="LOG4J2-1541" dev="ggregory" type="fix">
- Fix file handle resource leak in XmlConfiguration.XmlConfiguration(ConfigurationSource).
- </action>
- <action issue="LOG4J2-1538" dev="ggregory" type="fix" due-to="Igor Karpov">
- Prevent NPE when dynamically removing filters.
- </action>
- <action issue="LOG4J2-1532" dev="ggregory" type="fix">
- Attributes were not merged properly in composite configurations.
- </action>
- <action issue="LOG4J2-1529" dev="mattsicker" type="fix" due-to="Sridevi Narra">
- Attributes were not merged properly in composite configurations.
- </action>
- <action issue="LOG4J2-1527" dev="rpopma" type="fix" due-to="Jose Leon">
- Prevent NPE in RingBufferLogEvent.getFormattedMessage() when used in web applications.
- </action>
- <action issue="LOG4J2-905" dev="ggregory" type="fix" due-to="Moritz L�ser">
- Added ability to disable (date) lookup completely for compatibility with other libraries like Camel.
- </action>
- <action issue="LOG4J2-1526" dev="mikes" type="fix">
- Added support for setting StatusLogger destination in ConfigurationBuilder.
- </action>
- <action issue="LOG4J2-1448" dev="rpopma" type="fix" due-to="Keith Laban">
- Allow comma separated agents, host list to be passed to FlumeAppender.
- </action>
- <action issue="LOG4J2-1500" dev="ggregory" type="fix" due-to="Jose Leon">
- Merging configurations failed with an NPE when comparing Nodes with different attributes.
- </action>
- <action issue="LOG4J2-1482" dev="ggregory" type="fix" due-to="Sumit Singhal">
- Fixed improper header in CsvParameterLayout.
- </action>
- <action issue="LOG4J2-1199" dev="rpopma" type="fix">
- Documented that JVM Input Arguments Lookup (JMX) is not available on Google App Engine.
- </action>
- <action issue="LOG4J2-1438" dev="rpopma" type="fix">
- (GC) Added method getParameter() to ObjectMessage (and ReusableObjectMessage).
- </action>
- <action issue="LOG4J2-1488" dev="rpopma" type="fix" due-to="Richard Zschech">
- (GC) Fixed ISO8601 %date conversion pattern with a period '.' separator for milliseconds is now garbage free.
- </action>
- <action issue="LOG4J2-1489" dev="rpopma" type="fix" due-to="Richard Zschech">
- (GC) Fixed %date conversion patterns with a timezone parameter are now garbage free.
- </action>
- <action issue="LOG4J2-1279" dev="rpopma" type="fix" due-to="Tony Baines">
- Prevent NullPointerException in FastDateParser$TimeZoneStrategy.
- </action>
- <action issue="LOG4J2-1341" dev="rpopma" type="fix" due-to="Richard Zschech">
- (GC) HighlightConverter and StyleConverter are now GC-free.
- </action>
- <action issue="LOG4J2-1467" dev="rpopma, ggregory" type="fix" due-to="Ralf, Gary Gregory">
- [OSGi] Fixed missing import package.
- </action>
- <action issue="LOG4J2-351" dev="rpopma, ggregory" type="fix" due-to="Roland Weiglhofer">
- [OSGi] Fixed wrong Fragment-Host in manifest files.
- </action>
- <action issue="LOG4J2-1313" dev="rpopma" type="fix" due-to="Philipp Knobel">
- Properties declared in configuration can now have their value either in the element body or in an attribute named "value".
- </action>
- <action issue="LOG4J2-1235" dev="ggregory" type="fix" due-to="Niranjan Rao, Sascha Scholz, Aleksey Zvolinsky">
- org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy was not working correctly.
- </action>
- <action issue="LOG4J2-1502" dev="ggregory" type="fix" due-to="Sumit Singhal">
- Fixed issue where CsvParameterLayout and CsvLogEventLayout inserted NUL characters if data starts with {, (, [ or "
- </action>
- <action issue="LOG4J2-1573" dev="ggregory" type="fix" due-to="Steffen Offermann">
- Layout is no longer optional.
- </action>
- <action issue="LOG4J2-1608" dev="ggregory" type="fix">
- ServletAppender does not provide throwable object to ServletContext.
- </action>
- <action issue="LOG4J2-1599" dev="ggregory" type="fix">
- Prevent potential NPE in org.apache.logging.log4j.message.ParameterFormatter.formatMessage3(StringBuilder, char[], int, Object[], int, int[]).
- </action>
- <action issue="LOG4J2-1600" dev="ggregory" type="fix">
- Prevent potential NPE due to org.apache.logging.log4j.core.layout.MarkerPatternSelector.createSelector(PatternMatch[], String, boolean, boolean, Configuration).
- </action>
- <action issue="LOG4J2-1601" dev="ggregory" type="fix">
- Prevent potential NPE due to org.apache.logging.log4j.core.layout.ScriptPatternSelector.createSelector(AbstractScript, PatternMatch[], String, boolean, boolean, Configuration).
- </action>
- <action issue="LOG4J2-1602" dev="ggregory" type="fix">
- Prevent potential NPE in org.apache.logging.log4j.core.util.datetime.FormatCache.MultipartKey.equals(Object) when object is null.
- </action>
- <action issue="LOG4J2-1603" dev="ggregory" type="fix">
- Redo hashCode() and equals() methods in org.apache.logging.log4j.core.net.ssl classes.
- </action>
- <action issue="LOG4J2-1610" dev="ggregory" type="fix" due-to="Shubhankar">
- Add targetNamespace to log4j-config.xsd. GitHub #43.
- </action>
- <action issue="LOG4J2-1619" dev="ggregory" type="fix">
- new Log4jLogEvent().toString() throws an NPE.
- </action>
- <action issue="LOG4J2-1578" dev="ggregory" type="add">
- RoutingAppender can be configured with scripts. Add Script in a Routes element.
- </action>
- <action issue="LOG4J2-1597" dev="ggregory" type="add">
- Add a ScriptAppenderSelector to create an Appender specified by a Script.
- </action>
- <action issue="LOG4J2-1349" dev="rpopma" type="add">
- (GC) Added support for garbage-free ThreadContext map. Disabled by default, users need to enable this explicitly.
- </action>
- <action issue="LOG4J2-1447" dev="rpopma" type="add">
- (GC) Changed LogEvent's internal data structure for context data to be garbage-free. Added method LogEvent#getContextData(), deprecated method #getContextMap().
- </action>
- <action issue="LOG4J2-1010" dev="rpopma" type="add" due-to="Mikael St�ldal">
- Users can now inject context data from other sources than ThreadContext. Values can be any Object, not just Strings.
- </action>
- <action issue="LOG4J2-1568" dev="mattsicker" type="add">
- Added support for java.util.concurrent.LinkedTransferQueue to AsyncAppender.
- </action>
- <action issue="LOG4J2-1430" dev="mattsicker" type="add" due-to="John Cairns">
- Added optional support for Conversant DisruptorBlockingQueue in AsyncAppender.
- </action>
- <action issue="LOG4J2-1439" dev="mattsicker" type="add" due-to="Anthony Maire">
- Added optional support for JCTools MPSC bounded lock-free queue in AsyncAppender.
- </action>
- <action issue="LOG4J2-1558" dev="ggregory" type="add">
- SocketAppender now supports IO buffering.
- </action>
- <action issue="LOG4J2-1557" dev="ggregory" type="add">
- Add a Builder for the SocketAppender (deprecates factory method).
- </action>
- <action issue="LOG4J2-1609" dev="ggregory" type="add">
- Add a Builder to ServletAppender and deprecate factory method.
- </action>
- <action issue="LOG4J2-1553" dev="ggregory" type="add">
- AbstractManager now implements AutoCloseable.
- </action>
- <action issue="LOG4J2-1528" dev="mikes" type="add">
- Added ability to generate Log4j 2-style XML configuration file from ConfigurationBuilder.
- </action>
- <action issue="LOG4J2-1181" dev="mikes" type="add">
- Added Logging API for Scala 2.10 and 2.11.
- </action>
- <action issue="LOG4J2-1512" dev="mikes" type="add">
- Added options to exclude stack trace from JSON, XML and YAML layouts.
- </action>
- <action issue="LOG4J2-1539" dev="ggregory" type="add">
- Added Core API Configurator.shutdown(LoggerContext, long, TimeUnit).
- </action>
- <action issue="LOG4J2-1501" dev="ggregory" type="add">
- FileAppender is now able to create files on-demand.
- </action>
- <action issue="LOG4J2-1504" dev="ggregory" type="add">
- RollingFileAppender is now able to create files on-demand.
- </action>
- <action issue="LOG4J2-1471" dev="ggregory" type="add">
- [PatternLayout] Add an ANSI option to %xThrowable.
- </action>
- <action issue="LOG4J2-1472" dev="ggregory" type="add">
- org.apache.logging.log4j.core.LoggerContext now implements Closeable.
- </action>
- <action issue="LOG4J2-1458" dev="ggregory" type="add">
- [PatternLayout] Add an ANSI option to %message.
- </action>
- <action issue="LOG4J2-1505" dev="ggregory" type="add">
- Create a Builder for the FileAppender plugin to facilitate adding attributes in the future.
- </action>
- <action issue="LOG4J2-1507" dev="ggregory" type="add">
- Allow Builders to be completely generic.
- </action>
- <action issue="LOG4J2-1508" dev="ggregory" type="add">
- Allow a Builder to subclass another Builder.
- </action>
- <action issue="LOG4J2-1516" dev="rpopma" type="add" due-to="Gary Gregory">
- Add ThreadContextMap2 interface supporting method putAll(Map<String, String>).
- </action>
- <action issue="LOG4J2-1519" dev="ggregory" type="add">
- Add ThreadContext.putAll(Map<String, String>).
- </action>
- <action issue="LOG4J2-1520" dev="ggregory" type="add">
- Add JUnit Rule implementations to manage the thread context.
- </action>
- <action issue="LOG4J2-1547" dev="ggregory" type="add">
- The Core AbstractConfiguration now tracks its LoggerContext and add Configuration.getLoggerContext().
- </action>
- <action issue="LOG4J2-1540" dev="ggregory" type="add">
- The Core AbstractManager now tracks its LoggerContext.
- </action>
- <action issue="LOG4J2-1577" dev="ggregory" type="add">
- Add a Builder to the RoutingAppender and deprecate factory method.
- </action>
- <action issue="LOG4J2-1604" dev="ggregory" type="update" due-to="Colin Hillman">
- Log4j2 TcpSocketServer in background.
- </action>
- <action issue="LOG4J2-1574" dev="ggregory" type="update">
- Allow the RollingFileAppender to use default pattern layout.
- </action>
- <action issue="LOG4J2-1556" dev="ggregory" type="update">
- Custom Log4j threads now extend Log4jThread.
- </action>
- <action issue="LOG4J2-1605" dev="ggregory" type="update">
- Improve error messages for TcpSocketServer and UdpSocketServer.
- </action>
- <action issue="LOG4J2-1458" dev="ggregory" type="update">
- Updated Jackson from 2.7.5 to 2.8.0.
- </action>
- <action issue="LOG4J2-1494" dev="ggregory" type="update">
- Updated Jackson from 2.8.0 to 2.8.1.
- </action>
- <action issue="LOG4J2-1569" dev="ggregory" type="update">
- Updated Jackson from 2.8.1 to 2.8.2.
- </action>
- <action issue="LOG4J2-1598" dev="ggregory" type="update">
- Updated Jackson from 2.8.2 to 2.8.3.
- </action>
- <action issue="LOG4J2-1495" dev="ggregory" type="update">
- Updated LMAX Disruptor from 3.3.4 to 3.3.5.
- </action>
- <action issue="LOG4J2-1496" dev="ggregory" type="update">
- Updated Kafka client from 0.9.1.0 to 0.10.0.0.
- </action>
- <action issue="LOG4J2-1533" dev="ggregory" type="update">
- Updated Kafka client from 0.10.0.0 to 0.10.0.1.
- </action>
- <action issue="LOG4J2-1487" dev="ggregory" type="update">
- Updated JMS test from ActiveMQ 5.13.3 to 5.13.4.
- </action>
- <action issue="LOG4J2-1551" dev="ggregory" type="update">
- Updated JMS test from ActiveMQ 5.13.4 to 5.14.0.
- </action>
- <action issue="LOG4J2-1543" dev="ggregory" type="update">
- Removed deprecated Core API org.apache.logging.log4j.core.util.Constants.UTF_8.
- </action>
- <action issue="LOG4J2-1544" dev="ggregory" type="update">
- Removed deprecated Core API org.apache.logging.log4j.core.util.Assert.requireNonNull(T, String).
- </action>
- <action issue="LOG4J2-1545" dev="ggregory" type="update">
- Removed deprecated Web API org.apache.logging.log4j.web.WebLookup.getServletContext().
- </action>
- </release>
- <release version="2.6.2" date="2016-07-05" description="GA Release 2.6.2">
- <action issue="LOG4J2-904" dev="rgoers" type="fix" due-to="Bernhard M�hr">
- If copy and delete fails in rename action then resort to truncating the source file after copying it.
- </action>
- <action issue="LOG4J2-1250" dev="rgoers" type="fix">
- CronTriggeringPolicy was not properly setting the prevFileTime value for the PatternProcessor so
- file dates and times on rolled files were incorrect.
- </action>
- <action issue="LOG4J2-1452" dev="rpopma" type="fix" due-to="Mikael St�ldal">
- Fixed issue where reusable messages broke flow tracing logic.
- </action>
- <action issue="LOG4J2-1440" dev="rgoers" type="fix">
- Fix bug in OnStartupTriggeringPolicy that allowed it to roll over on every reconfiguration. Added
- minSize attribute.
- </action>
- <action issue="LOG4J2-1414" dev="rpopma" type="fix" due-to="Ralph Goers">
- Fixed minor issues with the 2.6.1 web site.
- </action>
- <action issue="LOG4J2-1434" dev="rpopma" type="fix" due-to="Luke Butters">
- Ensure that the thread-local StringBuilders used by Layouts to format log events to text will not
- retain excessive memory after a large message was logged.
- </action>
- <action issue="LOG4J2-1395" dev="mikes" type="add">
- Add "direct" option to ConsoleAppender for increased performance.
- </action>
- <action issue="LOG4J2-1418" dev="mikes" type="fix">
- Provide MessageFactory2 to custom Logger implementations.
- </action>
- <action issue="LOG4J2-1420" dev="rgoers" type="fix">
- RollingRandomAccessFileManager was not properly rolling over on startup and was getting a NullPointerException.
- </action>
- <action issue="LOG4J2-1417" dev="rpopma" type="fix">
- Fixed issue where Unbox utility ignored the value Constants.ENABLE_THREADLOCALS and always stored non-JDK classes in ThreadLocals.
- </action>
- <action issue="LOG4J2-1422" dev="rpopma" type="fix">
- Fixed issue where AsyncAppenderQueueFullPolicyTest sometimes hangs.
- </action>
- <action issue="LOG4J2-1445" dev="ggregory" type="fix" due-to="Ludovic HOCHET">
- OnStartupTriggeringPolicyTest fails on Windows saying the file is used by another process.
- </action>
- <action issue="LOG4J2-1437" dev="rpopma" type="add">
- (GC) ObjectMessage and ReusableObjectMessage now avoid calling toString() on auto-boxed primitive parameters.
- </action>
- <action issue="LOG4J2-1415" dev="rpopma" type="add">
- (GC) ParameterFormatter now avoids calling toString() on auto-boxed primitive message parameters.
- </action>
- <action issue="LOG4J2-1412" dev="rpopma" type="add">
- Unbox utility's ringbuffer of StringBuilders is now configurable.
- </action>
- <action issue="LOG4J2-1432" dev="ggregory" type="update">
- Update Jackson from 2.7.4 to 2.7.5.
- </action>
- <action issue="LOG4J2-1433" dev="ggregory" type="update">
- Update Jansi from 1.11 to 1.13.
- </action>
- <action issue="LOG4J2-1444" dev="ggregory" type="update">
- Update Apache Commons Compress from 1.11 to 1.12.
- </action>
- </release>
- <release version="2.6.1" date="2016-06-05" description="GA Release 2.6.1">
- <action issue="LOG4J2-1405" dev="rgoers" type="fix">
- OnStartupTriggeringPolicy was forcing a rollover of empty files at startup and would append a second footer that was added by the prior shutdown.
- </action>
- <action issue="LOG4J2-1406" dev="rpopma" type="fix" due-to="Trask Stalnaker">
- Fixed bug in ReusableParameterizedMessage where Throwable was never updated so first error was logged over and over again and subsequent errors were not logged.
- </action>
- <action issue="LOG4J2-1409" dev="rpopma" type="fix" due-to="Shahan">
- Fixed ArrayIndexOutOfBoundsException that may occur in ReusableParameterizedMessage.
- </action>
- <action issue="LOG4J2-997" dev="rgoers" type="fix" due-to="Maytee Chinavanichkit">
- Add filter and remove filter were not working properly in AbstractFilterable.
- </action>
- <action issue="LOG4J2-1032" dev="rgoers" type="fix">
- Changed RenameAction to use java.nio to better report rename failures.
- </action>
- <action issue="LOG4J2-1407" dev="ggregory" type="fix">
- Fixed misleading WARN log events from Log4j about message factories and unexpected formatting.
- </action>
- <action issue="LOG4J2-1408" dev="ggregory" type="fix">
- Added the module log4j-liquibase to BOM POM.
- </action>
- <action issue="LOG4J2-1180" dev="ggregory" type="fix">
- Logger cache now accounts for message factory.
- </action>
- <action issue="LOG4J2-1402" dev="rgoers" type="fix">
- Fix regression in properties configuration to support arbitrary component ids.
- </action>
- <action issue="LOG4J2-1385" dev="ggregory" type="update">
- (GC) CSV layouts should not create a new CSVPrinter for each log event. Requires Apache Commons CSV 1.4.
- </action>
- <action issue="LOG4J2-1398" dev="ggregory" type="update">
- Update liquibase-core from 3.4.2 to 3.5.1.
- </action>
- <action issue="LOG4J2-1399" dev="ggregory" type="update">
- Update Apache Commons CSV from 1.3 to 1.4.
- </action>
- <action issue="LOG4J2-1411" dev="mattsicker" type="add">
- Added documentation about plugin builders compared to factories.
- </action>
- <action issue="LOG4J2-1394" dev="mattsicker,mikes" type="fix">
- Fixed minor issues with the 2.6 web site.
- </action>
- </release>
- <release version="2.6" date="2016-05-25" description="GA Release 2.6">
- <action issue="LOG4J2-1270" dev="rpopma" type="add">
- (GC) Added support for garbage-free logging in steady state.
- This includes Async Loggers and logging synchronously to the console and to a file,
- but does not include the AsyncAppender. This release makes the GelfLayout and
- the main patterns in the PatternLayout garbage-free.
- </action>
- <action issue="LOG4J2-1297" dev="rpopma" type="add">
- (GC) Added manual page on garbage-free logging.
- </action>
- <action issue="LOG4J2-1373" dev="rpopma" type="add">
- (GC) Update Logger wrapper Generator tool to generate methods for the new Logger methods.
- </action>
- <action issue="LOG4J2-1356" dev="mikes" type="update">
- (GC) GelfLayout does now support garabage-free logging (with compressionType=OFF).
- </action>
- <action issue="LOG4J2-1326" dev="rpopma" type="add">
- (GC) Added methods to the Logger interface for logging CharSequence messages.
- </action>
- <action issue="LOG4J2-1344" dev="rpopma" type="add">
- (GC) FileAppender, RollingFileAppender and MemoryMappedFileAppender are now also garbage-free by default.
- </action>
- <action issue="LOG4J2-1343" dev="rpopma" type="update">
- (GC) ConsoleAppender is now garbage-free by default. This logic is reusable for all AbstractOutputStreamAppender subclasses.
- </action>
- <action issue="LOG4J2-1278" dev="rpopma" type="add">
- (GC) Added unrolled varargs methods to Logger API, added Unbox utility to avoid auto-boxing when logging primitive values.
- </action>
- <action issue="LOG4J2-1318" dev="rpopma" type="update">
- (GC) Avoid allocating unnecessary temporary objects in LoggerContext's getLogger methods.
- </action>
- <action issue="LOG4J2-1333" dev="rpopma" type="update">
- (GC) Avoid allocating unnecessary temporary objects in MarkerManager's getMarker methods.
- </action>
- <action issue="LOG4J2-1321" dev="rpopma" type="update">
- (GC) Avoid allocating unnecessary temporary objects in PatternLayout's NamePatternConverter and ClassNamePatternConverter.
- </action>
- <action issue="LOG4J2-1271" dev="rpopma" type="add">
- (GC) Add MessageFactory that avoid allocation by reusing a cached ParameterizedMessage instance.
- </action>
- <action issue="LOG4J2-1271" dev="rpopma" type="update">
- (GC) ParameterizedMessage optimizations to avoid or at least postpone allocating temporary objects.
- </action>
- <action issue="LOG4J2-1283" dev="rpopma" type="update">
- (GC) Provide ThreadLocal-based gc-free caching mechanism in DatePatternConverter for non-webapps.
- </action>
- <action issue="LOG4J2-1293" dev="rpopma" type="add">
- (GC) Add interface StringBuilderFormattable to enable converting Messages and parameters to text without allocating temporary objects.
- ParameterizedMessage, ObjectMessage, SimpleMessage and ThreadDumpMessage now implement StringBuilderFormattable.
- </action>
- <action issue="LOG4J2-1291" dev="rpopma" type="update">
- (GC) Update PatternLayout to utilize gc-free mechanism for LogEvent processing.
- </action>
- <action issue="LOG4J2-1292" dev="rpopma" type="update">
- (GC) Update RandomAccessFileAppender and RollingRandomAccessFileAppender to utilize gc-free Layout.encode() method.
- </action>
- <action issue="LOG4J2-1274" dev="rpopma" type="add">
- (GC) Add encode(LogEvent, ByteBufferDestination) method to Layout API to enable converting LogEvents to bytes without creating temporary objects.
- </action>
- <action issue="LOG4J2-1281" dev="rpopma" type="fix">
- (GC) LoggerConfig.getProperties() should not allocate on each call.
- </action>
- <action issue="LOG4J2-1272" dev="rpopma" type="update">
- (GC) Improve LoggerConfig's data structure for AppenderControl objects to avoid allocating temporary objects during
- traversal for each log event.
- </action>
- <action issue="LOG4J2-1269" dev="rpopma" type="fix">
- (GC) AsyncLogger should use thread-local translator by default.
- </action>
- <action issue="LOG4J2-623" dev="rpopma" type="fix">
- Generate MDC properties as a JSON map in JSONLayout, with option to output as list of map entries.
- </action>
- <action issue="LOG4J2-1362" dev="rpopma" type="add" due-to="Gary Gregory">
- Added a YAML layout.
- </action>
- <action issue="LOG4J2-1387" dev="rpopma" type="fix">
- Fixed memory leak related to shutdown hook.
- </action>
- <action issue="LOG4J2-1179" dev="rpopma" type="add">
- Documented benchmark results comparing Log4j 2 performance to other logging libraries.
- </action>
- <action issue="LOG4J2-1382" dev="rpopma" type="fix">
- Copying a MutableLogEvent using Log4jLogEvent.Builder should not unnecessarily obtain caller location information.
- </action>
- <action issue="LOG4J2-1011" dev="mikes" type="add">
- Document dependencies for layouts.
- </action>
- <action issue="LOG4J2-621" dev="ggregory" type="add" due-to="Lee Theobald, Kamal Mettananda, Gary Gregory">
- Pattern to drop first N package parts.
- </action>
- <action issue="LOG4J2-494" dev="rgoers" type="add" due-to="Philipp Knobel">
- Support merging configurations to for a composite configuration.
- </action>
- <action issue="LOG4J2-1357" dev="mikes" type="add">
- Option to not log stack traces for logged Throwables in GelfLayout.
- </action>
- <action issue="LOG4J2-1375" dev="rpopma" type="update">
- Update SLF4J from 1.7.13 to 1.7.21.
- </action>
- <action issue="LOG4J2-1374" dev="rpopma" type="update">
- Migrate tests from Logback 1.1.3 to 1.1.7.
- </action>
- <action issue="LOG4J2-1384" dev="ggregory" type="update">
- Update Apache Commons CSV from 1.2 to 1.3.
- </action>
- <action issue="LOG4J2-1372" dev="rgoers" type="fix" due-to="Kamal Mettananda, Gary Gregory">
- XMLLayout indents, but not the first child tag (Event).
- </action>
- <action issue="LOG4J2-1363" dev="rgoers" type="fix">
- Properties Configuration did not support includeLocation attribute on Loggers.
- </action>
- <action issue="LOG4J2-1263" dev="rgoers" type="fix">
- The ConfigurationSource was not saved for BuiltConfigurations so monitor interval had no effect.
- </action>
- <action issue="LOG4J2-1369" dev="ggregory" type="fix" due-to="Alex Birch, Gary Gregory">
- "xz" compression results in plaintext, uncompressed files.
- </action>
- <action issue="LOG4J2-1365" dev="mikes" type="update">
- (Log4j-internal) Provide message text as CharSequence for some message types to optimize some layouts.
- </action>
- <action issue="LOG4J2-1368" dev="rpopma" type="fix">
- (Log4j-internal) StatusLogger dropped exceptions when logging parameterized messages.
- </action>
- <action issue="LOG4J2-1348" dev="ggregory" type="add" due-to="Greg Thomas, Gary Gregory">
- Add an AutoCloseable ThreadContext class: CloseableThreadContext.
- </action>
- <action issue="LOG4J2-1345" dev="rpopma" type="update">
- (Doc) Clarify documentation for properties that control Log4j behaviour.
- </action>
- <action issue="LOG4J2-1336" dev="ggregory" type="fix" due-to="Zbynek Vyskovsky">
- LoggerFactory in 1.2 API module is not compatible with 1.2.
- </action>
- <action issue="LOG4J2-1354" dev="ggregory" type="fix" due-to="Arkadiusz Adolph">
- No configuration reload is triggered under Windows when replacing the configuration file with one that has older last modified date.
- </action>
- <action issue="LOG4J2-1346" type="fix">
- Exception from Log4jServletContextListener prevents jetty-maven-plugin run-forked.
- </action>
- <action issue="LOG4J2-1339" dev="rpopma" type="fix">
- (Perf) AsyncLogger performance optimization: avoid calling instanceof TimestampMessage in hot path.
- </action>
- <action issue="LOG4J2-1324" dev="rpopma" type="fix">
- Improve error handling in the Async Logger background thread: the new default exception handler no longer rethrows the error.
- </action>
- <action issue="LOG4J2-1309" dev="ggregory" type="fix">
- Configuration file error does not show cause exception.
- </action>
- <action issue="LOG4J2-1299" dev="ggregory" type="add">
- Add pattern converter for thread id and priority in PatternLayout.
- </action>
- <action issue="LOG4J2-1289" dev="ggregory" type="fix">
- Change flow logging text from "entry' to "Enter" and "exit" to "Exit".
- </action>
- <action issue="LOG4J2-1284" dev="rpopma" type="fix">
- Made default MessageFactory configurable.
- </action>
- <action issue="LOG4J2-1280" dev="ggregory" type="fix">
- Deprecate org.apache.logging.log4j.util.MessageSupplier.
- </action>
- <action issue="LOG4J2-1280" dev="rpopma" type="fix">
- Logger methods taking Supplier parameters now correctly handle cases where the supplied value is a Message.
- </action>
- <action issue="LOG4J2-1268" dev="rpopma" type="fix">
- FixedDateFormat was incorrect for formats having MMM with the French locale.
- </action>
- <action issue="LOG4J2-1255" dev="rgoers" type="update">
- Add enhanced entry and exit methods.
- </action>
- <action issue="LOG4J2-124" dev="rgoers" type="add">
- Add shutdown methods to LogManager.
- </action>
- <action issue="LOG4J2-1222" dev="rgoers" type="fix">
- Creation of a LoggerContext will fail if shutdown is in progress. LogManager will default to SimpleLogger instead.
- </action>
- <action issue="LOG4J2-1221" dev="rpopma" type="add" due-to="Michael Barker">
- Added async logger Timeout wait strategy and made this the default wait strategy for async loggers.
- This prevents a rare deadlock that may occur on Solaris.
- </action>
- <action issue="LOG4J2-1080" dev="rpopma" type="add">
- Added option to discard events below a certain log level if the async logger ring buffer
- or async appender queue is full.
- </action>
- <action issue="LOG4J2-1237" dev="ggregory" type="add" due-to="Mike Calmus, Gary Gregory">
- Make PatternLayout header and footer accept a pattern.
- </action>
- <action issue="LOG4J2-1244" dev="ggregory" type="add" due-to="Anshu Garg, Remko Popma, Gary Gregory">
- Make header and footer values customizable in JSONLayout.
- </action>
- <action issue="LOG4J2-1245" dev="ggregory" type="add">
- Make CSV Layout header and footers accept patterns.
- </action>
- <action issue="LOG4J2-1192" dev="ggregory" type="add" due-to="J�rg Bretschneider, Gary Gregory">
- Dynamic Subject for SMTP Appender.
- </action>
- <action issue="LOG4J2-1277" dev="ggregory" type="add" due-to="Gary Gregory, Ludovic Hochet">
- FormattedMessage, MessageFormatMessage and StringFormattedMessage should support passing in a Locale to ensure appropriate formatting.
- </action>
- <action issue="LOG4J2-1260" dev="ggregory" type="fix" due-to="Blake Day, Gary Gregory">
- TlsSyslogFrame calculates message length incorrectly.
- </action>
- <action issue="LOG4J2-1258" dev="ggregory" type="fix" due-to="Francis Lalonde">
- Async DynamicThresholdFilter does not use the log event's context map.
- </action>
- <action issue="LOG4J2-1232" dev="ggregory" type="fix" due-to="Nikolai">
- Incorrect log rotation in last week of year.
- </action>
- <action issue="LOG4J2-1248" dev="rpopma" type="fix">
- Fixed broken nanotime in pattern layout.
- </action>
- <action issue="LOG4J2-908" dev="ggregory" type="fix" due-to="Konstantinos Liakos, Patrick Flaherty, Robin Coe, Gary Gregory">
- JSONLayout doesn't add a comma between log events.
- </action>
- <action issue="LOG4J2-1230" dev="ggregory" type="fix" due-to="Vladimir Hudec, Ralph Goers, Gary Gregory">
- Don't concatenate SYSLOG Messages.
- </action>
- <action issue="LOG4J2-1238" dev="ggregory" type="fix">
- org.apache.logging.log4j.core.net.TcpSocketManager and other classes does not report internal exceptions to the status logger.
- </action>
- <action issue="LOG4J2-1212" dev="rpopma" type="fix">
- Fix documentation to specify the correct default wait strategy used by async loggers.
- </action>
- <action issue="LOG4J2-1215" dev="ggregory" type="fix" due-to="Erik Kemperman">
- Documentation/XSD inconsistencies.
- </action>
- <action issue="LOG4J2-1276" dev="ggregory" type="fix" due-to="Ludovic Hochet">
- LoggerMessageSupplierTest and LoggerSupplierTest are Locale sensitive.
- </action>
- <action issue="LOG4J2-1380" dev="ggregory" type="update">
- Update Jackson from 2.7.3 to 2.7.4.
- </action>
- <action issue="LOG4J2-1304" dev="ggregory" type="update">
- Update Jackson from 2.7.0 to 2.7.2.
- </action>
- <action issue="LOG4J2-1253" dev="ggregory" type="update">
- Update LMAX Disruptor from 3.3.2 to 3.3.4.
- </action>
- <action issue="LOG4J2-1219" dev="ggregory" type="update">
- Update SLF4J from 1.7.12 to 1.7.13.
- </action>
- <action issue="LOG4J2-1239" dev="ggregory" type="update">
- Update Jackson from 2.6.3 to 2.6.4.
- </action>
- <action issue="LOG4J2-1249" dev="ggregory" type="update">
- Update Jackson from 2.6.4 to 2.7.0.
- </action>
- <action issue="LOG4J2-1351" dev="ggregory" type="update">
- Update Jackson from 2.7.2 to 2.7.3.
- </action>
- <action issue="LOG4J2-1240" dev="ggregory" type="update">
- Update Liquibase from 3.3.5 to 3.4.2.
- </action>
- <action issue="LOG4J2-1294" dev="ggregory" type="update">
- Update Kafka client from 0.9.0.0 to 0.9.0.1.
- </action>
- <action issue="LOG4J2-1352" dev="ggregory" type="update">
- Update javax.mail from 1.5.4 to 1.5.5.
- </action>
- <action issue="LOG4J2-1358" dev="ggregory" type="update">
- Update Apache Commons Compress from 1.10 to 1.11.
- </action>
- <action issue="LOG4J2-1388" dev="rpopma" type="update">
- Update Google java-allocation-instrumenter from 3.0 to 3.0.1.
- </action>
- <action issue="LOG4J2-1233" dev="ggregory" type="update" due-to="Bahri Gencsoy">
- Misleading Value In Properties Example.
- </action>
- <action issue="LOG4J2-1251" dev="mattsicker" type="fix" due-to="Romain Manni-Bucau">
- Fix JUL bridge issue where LogRecord.getParameters() is used when null.
- </action>
- <action issue="LOG4J2-1254" dev="rpopma" type="fix" due-to="Josh Trow">
- Fix typo in Flow Tracing documentation.
- </action>
- <action issue="LOG4J2-920" dev="mattsicker" type="fix" due-to="Ludovic Hochet">
- ClassNotFoundException for BundleContextSelector when initialising in an OSGi environment.
- </action>
- <action issue="LOG4J2-1300" dev="mattsicker" type="update">
- Remove serializability from classes that don't need it.
- </action>
- <action issue="LOG4J2-1303" dev="mattsicker" type="add">
- Add documentation links to runtime dependencies in each component intro page.
- </action>
- <action issue="LOG4J2-1275" dev="mattsicker" type="fix" due-to="Ludovic Hochet">
- Fix RollingAppenderNoUnconditionalDeleteTest repeat test runs from failing.
- </action>
- <action issue="LOG4J2-1262" dev="mattsicker" type="fix">
- Stop throwing unnecessary exception in Log4jServletContextListener.contextDestroyed().
- </action>
- <action issue="LOG4J2-1252" dev="mattsicker" type="add">
- JeroMqAppender should support layouts.
- </action>
- <action issue="LOG4J2-1227" dev="mattsicker" type="fix" due-to="Olivier Lemasle">
- NullPointerException in MapLookup.lookup if the event is null.
- </action>
- <action issue="LOG4J2-1306" dev="mattsicker" type="update">
- JeroMqAppender should use ShutdownCallbackRegistry instead of runtime hooks.
- </action>
- <action issue="LOG4J2-1217" dev="mattsicker" type="add" due-to="Thies Wellpott">
- PatternLayout option to limit length of text.
- </action>
- <action issue="LOG4J2-1308" dev="mattsicker" type="update">
- Remove need to pre-specify appender et al. identifiers in property file config format.
- </action>
- <action issue="LOG4J2-1050" dev="mattsicker" type="fix" due-to="Adam Retter">
- Add a Log4jLookup class to help write log files relative to log4j2.xml.
- </action>
- <action issue="LOG4J2-1133" dev="mattsicker" type="add">
- Add JNDI lookup documentation.
- </action>
- <action issue="LOG4J2-1310" dev="mattsicker" type="fix">
- JndiLookup mindlessly casts to String and should use String.valueOf().
- </action>
- <action issue="LOG4J2-1206" dev="mattsicker" type="update">
- org.apache.logging.log4j.core.LoggerContext#updateLoggers should call firePropertyChangeEvent.
- </action>
- <action issue="LOG4J2-248" dev="mattsicker" type="fix">
- Log4jWebInitializerImpl: Use Thread instead of Class for fallback classloader.
- </action>
- <action issue="LOG4J2-1169" dev="mattsicker" type="add" due-to="Gerald Kritzinger">
- PatternLayout: Possible variable substitution in equals substitution parameter.
- </action>
- <action issue="LOG4J2-1322" dev="mattsicker" type="update">
- Update Log4j 1.x migration guide to include information about system property lookup syntax changes.
- </action>
- <action issue="LOG4J2-1330" dev="mattsicker" type="fix">
- Fix NoClassDefFoundError in ReflectionUtil on Google App Engine.
- </action>
- </release>
- <release version="2.5" date="2015-12-06" description="GA Release 2.5">
- <action issue="LOG4J2-324" dev="rpopma" type="fix">
- Reduced memory usage of status messages in bounded queue; support zero-length queue that stores no messages.
- </action>
- <action issue="LOG4J2-1173" dev="rpopma" type="fix">
- Fixed rollover error when copying to a directory mapped to a remote Linux host.
- </action>
- <action issue="LOG4J2-435" dev="rpopma" type="add" due-to="Robert Schaft">
- Added support for custom delete actions triggered by a rollover.
- </action>
- <action issue="LOG4J2-649" dev="rgoers" type="update" due-to="Aleksey Zvolinsky">
- Add PurgePolicy and IdlePurgePolicy to RoutingAppender.
- </action>
- <action issue="LOG4J2-1202" dev="rgoers" type="update">
- Remove ConfigurationMonitor. The WatchManager is now used to check for configuration changes.
- </action>
- <action issue="LOG4J2-1195" dev="mikes" type="fix" due-to="Melvin Du">
- Make KafkaAppender support SerializedLayout.
- </action>
- <action issue="LOG4J2-89" dev="rgoers" type="add">
- Allow rollover to occur at any time. Add CronTriggeringPolicy.
- </action>
- <action issue="LOG4J2-381" dev="rgoers" type="fix" due-to="Anthony Baldocchi">
- Allow triggering policy and rollover strategy to be modified during reconfiguration.
- </action>
- <action issue="LOG4J2-1136" dev="rgoers" type="add">
- Add support for JSR 223 scripts in filters and the PatternSelector.
- </action>
- <action issue="LOG4J2-1168" dev="ggregory" type="add" due-to="Steven Swor">
- Add getters for source and destination file in file rename action.
- </action>
- <action issue="LOG4J2-1175" dev="ggregory" type="add">
- Add getters for classes in org.apache.logging.log4j.core.appender.rolling.action.
- </action>
- <action issue="LOG4J2-898" dev="rpopma" type="add">
- Added system property to allow users to control whether messages should be formatted in the background.
- </action>
- <action issue="LOG4J2-1178" dev="ggregory" type="add">
- Support use-case for JDBC's CommonDataSource.setLogWriter(PrintWriter) and java.sql.DriverManager.setLogWriter(PrintWriter).
- </action>
- <action issue="LOG4J2-1187" dev="ggregory" type="add">
- Support use case for java.sql.DriverManager.setLogStream(PrintStream).
- </action>
- <action issue="LOG4J2-1029" dev="rpopma" type="fix" due-to="Stefan Leonhartsberger">
- Performance improvement when gathering location information.
- </action>
- <action issue="LOG4J2-1172" dev="rpopma" type="fix">
- Fixed ThreadLocal leak [AsyncLogger$Info] on Tomcat when using AsyncLoggerContextSelector.
- </action>
- <action issue="LOG4J2-1176" dev="rpopma" type="fix">
- Fixed memory leak when log4j jars are in Tomcat's lib folder.
- </action>
- <action issue="LOG4J2-1180" dev="ggregory" type="fix" due-to="Mikael St�ldal">
- Logger cache does not account for message factory.
- </action>
- <action issue="LOG4J2-879" dev="rpopma" type="fix">
- Documentation: fixed minor issues with the site and manual pages.
- </action>
- <action issue="LOG4J2-999" dev="rpopma" type="fix" due-to="Joan Balaguer�">
- RollingFileAppender should also roll over when log event time is equal to rollover time, not only when later.
- </action>
- <action issue="LOG4J2-873" dev="rpopma" type="fix" due-to="Martin Dickins, LC, Luke Woodward">
- Fixed bug where omitting the <display-name> element in web.xml caused incorrect log4j initialization,
- resulting in memory leaks when the web application was stopped or reloaded.
- </action>
- <action issue="LOG4J2-323" dev="rpopma" type="fix">
- Better web app support for async loggers: Fixed a memory leak that occurred when the logging jars are placed
- in the container's classpath and the configuration file uses AsyncRoot/AsyncLogger.
- The problem was that the first web application started the Disruptor background thread [AsyncLoggerConfig-1] but did not stop it until all web apps are stopped.
- Each web application now has its own Disruptor which is stopped/started together with the web app.
- </action>
- <action issue="LOG4J2-493" dev="rpopma" type="fix">
- Better web app support for async loggers: it is now possible to place the logging jars in the container's
- classpath when making all loggers asynchronous by using AsyncLoggerContextSelector. This fixes a problem where
- logging would stop working after stopping and restarting a web application.
- </action>
- <action issue="LOG4J2-1171" dev="rpopma" type="fix">
- Use servlet context name for logger context name when available.
- </action>
- <action issue="LOG4J2-1159" dev="rpopma" type="fix">
- Fixed a ThreadLocal memory leak in Tomcat8 that mentions AsyncLoggers when Async Loggers are not used.
- </action>
- <action issue="LOG4J2-1166" dev="rpopma" type="fix">
- AbstractConfiguration executor should use a DaemonThreadFactory.
- </action>
- <action issue="LOG4J2-1165" dev="rpopma" type="fix">
- Improve Log4j initialization status messages.
- </action>
- <action issue="LOG4J2-1156" dev="rpopma" type="fix">
- Web site corrections and updates.
- </action>
- <action issue="LOG4J2-1158" dev="ggregory" type="fix" due-to="Michael Fortin, Gary Gregory">
- Log4J JUL adapter is using MessageFormat on String passed by java.util.function.Supplier<String>.
- </action>
- <action issue="LOG4J2-801" dev="mattsicker" type="fix">
- org.apache.logging.log4j.core.Logger should be serializable.
- </action>
- <action issue="LOG4J2-1157" dev="mattsicker" type="fix" due-to="Norbert Bartels">
- Fix compilation error for classes annotated with @Plugin.
- </action>
- <action issue="LOG4J2-948" dev="mattsicker" type="fix" due-to="Andrew Flower">
- Fix plugin documentation error about Converters.
- </action>
- <action issue="LOG4J2-1193" dev="ggregory" type="fix">
- Prefix all thread names Log4j creates with "Log4j2-".
- </action>
- <action issue="LOG4J2-1194" dev="ggregory" type="fix" due-to="Adam Brin">
- Documentation does not match parameters for LoggerNameLevelRewritePolicy.
- </action>
- <action issue="LOG4J2-1196" dev="mattsicker" type="fix" due-to="Ren� Zanner">
- MongoDbConnection does not close MongoClient.
- </action>
- <action issue="LOG4J2-1174" dev="ggregory" type="update">
- Update Jackson from 2.6.2 to 2.6.3.
- </action>
- <action issue="LOG4J2-1207" dev="ggregory" type="update">
- Update kafka-clients from 0.8.2.2 to 0.9.0.0.
- </action>
- </release>
- <release version="2.4.1" date="2015-10-08" description="GA Release 2.4.1">
- <action issue="LOG4J2-1129" dev="rgoers" type="add">
- Allow PatternLayout to select a pattern to use based on some selection criteria.
- </action>
- <action issue="LOG4J2-1145" dev="ggregory" type="add">
- Add %equals to PatternLayout to test and replace patterns with strings.
- </action>
- <action issue="LOG4J2-1147" dev="ggregory" type="add">
- Add %equalsIgnoreCase to PatternLayout to test and replace patterns with strings.
- </action>
- <action issue="LOG4J2-1146" dev="ggregory" type="add">
- Add %notEmpty to PatternLayout to avoid output of patterns where all variables are empty.
- </action>
- <action issue="LOG4J2-1020" dev="mikes" type="add">
- Add possibility to set shutdown timeout on AsyncAppender.
- </action>
- <action issue="LOG4J2-1153" dev="rpopma" type="fix">
- Fixed NullPointerException when only root logger is defined (and no named loggers) in configuration properties file.
- </action>
- <action issue="LOG4J2-1140" dev="rpopma" type="fix">
- Fixed bug where headers were not being written to first file with RollingFileAppender.
- </action>
- <action issue="LOG4J2-1149" dev="rpopma" type="fix">
- Fixed bug where PatternLayout predefined date pattern with time zone always renders default date format.
- </action>
- <action issue="LOG4J2-1050" dev="rpopma" type="fix">
- Fixed Log4jLookup.
- </action>
- <action issue="LOG4J2-1142" dev="rpopma" type="fix">
- Fix potential memory leak in web applications by using a straight ThreadLocal field instead of subclassing ThreadLocal.
- </action>
- <action issue="LOG4J2-1135" dev="rpopma" type="fix">
- Compression on rollover was broken: log file was renamed to .zip but not compressed.
- </action>
- <action issue="LOG4J2-1127" dev="ggregory" type="fix">
- log4j2.xml cannot be parsed on Oracle Weblogic 12c.
- </action>
- <action issue="LOG4J2-1132" dev="ggregory" type="fix">
- Do not use MongoDB driver 2.13.3 deprecated methods.
- </action>
- <action issue="LOG4J2-1144" dev="ggregory" type="fix">
- Add %markerSimpleName in pattern layout should evaluate to marker name (not toString()).
- </action>
- <action issue="LOG4J2-1126" dev="ggregory" type="fix">
- Web site corrections and updates.
- </action>
- <action issue="LOG4J2-1151" dev="rpopma" type="update">
- Performance improvement: backport Java 8 fast ISO-8859-1 String to byte[] encoder to AbstractStringLayout.
- </action>
- <action issue="LOG4J2-935" dev="rpopma" type="update">
- Performance improvement when converting Strings to byte[] arrays.
- </action>
- <action issue="LOG4J2-1040" dev="ggregory" type="update">
- Update MongoDB driver from 2.13.3 to 3.0.4.
- </action>
- <action issue="LOG4J2-1128" dev="ggregory" type="update">
- Reuse StringBuilder to improve performance for String-based layouts: CSV, GELF, HTML, RFC524, Syslog.
- </action>
- <action issue="LOG4J2-1131" dev="ggregory" type="update">
- Update mongo-java-driver from 2.13.2 to 2.13.3.
- </action>
- <action issue="LOG4J2-1138" dev="ggregory" type="update">
- Do not use Jackson deprecated methods.
- </action>
- <action issue="LOG4J2-1139" dev="ggregory" type="update">
- Update Jackson from 2.6.1 to 2.6.2.
- </action>
- <action issue="LOG4J2-1150" dev="ggregory" type="update">
- Update kafka-clients from 0.8.2.1 to 0.8.2.2.
- </action>
- </release>
- <release version="2.4" date="2015-09-20" description="GA Release 2.4">
- <action issue="LOG4J2-635" dev="rgoers" type="add">
- Add support for configuration via Properties.
- </action>
- <action issue="LOG4J2-952" dev="rgoers" type="add">
- Add ConfigurationBuilder for programmatic configuration.
- </action>
- <action issue="LOG4J2-1017" dev="ggregory" type="update">
- Update Java platform from Java 6 to 7. From this version onwards, log4j 2 requires Java 7.
- </action>
- <action issue="LOG4J2-599" dev="rpopma" type="add">
- Added support for Java 8 lambda expressions to lazily construct a log message only if
- the requested log level is enabled.
- </action>
- <action issue="LOG4J2-1118" dev="rpopma" type="add">
- Updated Logger wrapper generator tool to add Java 8 lambda support for custom log levels.
- </action>
- <action issue="LOG4J2-1107" dev="ggregory" type="add" due-to="Mikael St�ldal">
- New Appender for Apache Kafka.
- </action>
- <action issue="LOG4J2-1113" dev="ggregory" type="add" due-to="Gary Gregory">
- New publisher Appender for ZeroMQ (using JeroMQ).
- </action>
- <action issue="LOG4J2-1088" dev="ggregory" type="add" due-to="Gary Gregory">
- Add Comma Separated Value (CSV) layouts for parameter and event logging.
- </action>
- <action issue="LOG4J2-812" dev="rgoers" type="update">
- PatternLayout timestamp formatting performance improvement: replaced synchronized SimpleDateFormat with
- Apache Commons FastDateFormat. This and better caching resulted in a ~3-30X faster timestamp formatting.
- </action>
- <action issue="LOG4J2-1097" dev="rpopma" type="update">
- PatternLayout timestamp formatting performance improvement: predefined date formats (and variants using
- a period '.' millisecond separator instead of ',') are now formatted ~2-10X faster than other date formats.
- </action>
- <action issue="LOG4J2-1096" dev="rpopma" type="update">
- Improved performance of ParameterizedMessage::getFormattedMessage by ~2X.
- </action>
- <action issue="LOG4J2-1120" dev="rpopma" type="update">
- LoggerConfig performance improvements: avoid unnecessary lock acquisition, use more efficient data structure.
- </action>
- <action issue="LOG4J2-1125" dev="rpopma" type="update">
- PatternLayout performance improvement by caching and reusing a ThreadLocal StringBuilder.
- </action>
- <action issue="LOG4J2-1121" dev="rpopma" type="fix">
- Fixed potential race condition on reconfiguration. Introduced ReliabilityStrategy to facilitate
- switching between different mechanisms for preventing log events from being dropped on reconfiguration.
- </action>
- <action issue="LOG4J2-1114" dev="ggregory" type="update">
- Add thread name to status logger layout.
- </action>
- <action issue="LOG4J2-1123" dev="ggregory" type="fix">
- Core Configurator.initialize(String, ClassLoader, String) fails to work when config location is a file path.
- </action>
- <action issue="LOG4J2-1117" dev="ggregory" type="fix" due-to="Marcus Thiesen">
- OutputStreamManager in ConsoleAppender leaking managers.
- </action>
- <action issue="LOG4J2-1044" dev="rgoers" type="fix">
- Write pending events to Flume when the appender is stopped.
- </action>
- <action issue="LOG4J2-1108" dev="ggregory" type="fix" due-to="Mikael St�ldal">
- NullPointerException when passing null to java.util.logging.Logger.setLevel().
- </action>
- <action issue="LOG4J2-1110" dev="ggregory" type="fix">
- org.apache.logging.log4j.jul.CoreLogger.setLevel() checks for security permission too late.
- </action>
- <action dev="rpopma" type="remove">
- Removed experimental interface LevelLogger which got committed to master by mistake.
- </action>
- <action issue="LOG4J2-1010" dev="rgoers" type="update">
- Pass log event when interpolating logger properties.
- </action>
- <action issue="LOG4J2-1090" dev="ggregory" type="add">
- Add Core Configurator APIs to change a logger's level.
- </action>
- <action issue="LOG4J2-1105" dev="ggregory" type="add" due-to="Gary Gregory">
- Add API org.apache.logging.log4j.Level.isInRange(Level, Level).
- </action>
- <action issue="LOG4J2-1106" dev="ggregory" type="add" due-to="Gary Gregory">
- Add a LevelRangeFilter class.
- </action>
- <action issue="LOG4J2-1074" dev="rpopma" type="add">
- Added support for system nanosecond time in pattern layout.
- </action>
- <action issue="LOG4J2-1075" dev="rpopma" type="add">
- Added support for compressing to bzip2 format on file rollover.
- </action>
- <action issue="LOG4J2-1077" dev="ggregory" type="add">
- Support additional Apache Commons Compress compression formats on rollover: Deflate, Pack200, XY.
- </action>
- <action issue="LOG4J2-767" dev="ggregory" type="add" due-to="Mikael St�ldal">
- New module for Liquibase integration.
- </action>
- <action issue="LOG4J2-1023" dev="ggregory" type="add" due-to="Mikael St�ldal">
- New RewritePolicy for changing level of a log event.
- </action>
- <action issue="LOG4J2-1015" dev="ggregory" type="add" due-to="Daniel Marcotte">
- Add a way to route messages based on the %marker in Layout for RoutingAppender.
- </action>
- <action issue="LOG4J2-1050" dev="ggregory" type="add" due-to="Adam Retter">
- Add a Log4jLookup class to help write log files relative to log4j2.xml.
- </action>
- <action issue="LOG4J2-1057" dev="ggregory" type="add">
- Add API org.apache.logging.log4j.LogManager.getFormatterLogger().
- </action>
- <action issue="LOG4J2-1066" dev="ggregory" type="add" due-to="Charles Allen">
- Expose Log4jContextFactory's ShutdownCallbackRegistry.
- </action>
- <action issue="LOG4J2-1084" dev="ggregory" type="fix" due-to="Philipp Schneider">
- Misleading StatusLogger WARN event in LogManager with java.util.Map.
- </action>
- <action issue="LOG4J2-1051" dev="ggregory" type="fix" due-to="Lukasz Lenart">
- NoClassDefFoundError when starting app on Google App Engine.
- </action>
- <action issue="LOG4J2-684" dev="ggregory" type="fix" due-to="Joern Huxhorn, Mauro Molinari">
- ExtendedThrowablePatternConverter does not print suppressed exceptions.
- </action>
- <action issue="LOG4J2-1069" dev="ggregory" type="fix" due-to="Sam Braam">
- Improper handling of JSON escape chars when deserializing JSON log events.
- </action>
- <action issue="LOG4J2-1068" dev="ggregory" type="fix" due-to="Andy McMullan">
- Exceptions not logged when using TcpSocketServer + SerializedLayout.
- </action>
- <action issue="LOG4J2-1067" dev="ggregory" type="fix" due-to="Sam Braam">
- ThrowableProxy getExtendedStackTraceAsString throws NPE on deserialized nested exceptions.
- </action>
- <action issue="LOG4J2-1049" dev="rpopma" type="fix" due-to="Robert Schaft">
- AsyncAppender now resets the thread interrupted flag after catching InterruptedException.
- </action>
- <action issue="LOG4J2-1048" dev="rpopma" type="fix" due-to="Nikhil">
- FileConfigurationMonitor unnecessarily calls System.currentTimeMillis() causing high CPU usage.
- </action>
- <action issue="LOG4J2-1037" dev="ggregory" type="fix" due-to="Marc Dergacz">
- Backward compatibility issue in log4j-1.2-api NDC pop() and peek().
- </action>
- <action issue="LOG4J2-1025" dev="ggregory" type="fix" due-to="Mikael St�ldal">
- Custom java.util.logging.Level gives null Log4j Level and causes NPE.
- </action>
- <action issue="LOG4J2-1033" dev="ggregory" type="fix" due-to="Mikael St�ldal">
- SimpleLogger creates unnecessary Map objects by calling ThreadContext.getContext() instead of getImmutableContext().
- </action>
- <action issue="LOG4J2-1026" dev="ggregory" type="fix">
- HighlightConverter does not obey noConsoleNoAnsi.
- </action>
- <action issue="LOG4J2-1019" dev="ggregory" type="fix">
- ZipCompressAction leaves files open until GC when an IO error takes place.
- </action>
- <action issue="LOG4J2-1020" dev="ggregory" type="fix">
- GzCompressAction leaves files open until GC when an IO error takes place.
- </action>
- <action issue="LOG4J2-1038" dev="ggregory" type="fix" due-to="Gili">
- Incorrect documentation for layout default charset.
- </action>
- <action issue="LOG4J2-1042" dev="ggregory" type="fix" due-to="Guillaume Turri">
- Socket and Syslog appenders don't take timeout into account at startup.
- </action>
- <action issue="LOG4J2-934" dev="ggregory" type="fix" due-to="Kenneth Gendron">
- Circular suppressed Exception throws StackOverflowError.
- </action>
- <action issue="LOG4J2-1046" dev="ggregory" type="fix" due-to="Kenneth Gendron">
- Circular Exception cause throws StackOverflowError.
- </action>
- <action issue="LOG4J2-982" dev="ggregory" type="fix" due-to="Mikhail Mazurskiy">
- Use System.nanoTime() to measure time intervals.
- </action>
- <action issue="LOG4J2-1045" dev="ggregory" type="fix" due-to="G�nter Albrecht">
- Externalize log4j2.xml via URL resource.
- </action>
- <action issue="LOG4J2-1058" dev="ggregory" type="fix" due-to="Daniel Branzea">
- Log4jMarker#contains(String) does not respect org.slf4j.Marker contract.
- </action>
- <action issue="LOG4J2-1060" dev="ggregory" type="fix">
- Log4jMarker#contains(Marker) does not respect org.slf4j.Marker contract.
- </action>
- <action issue="LOG4J2-1061" dev="ggregory" type="fix">
- Log4jMarker#remove(Marker) does not respect org.slf4j.Marker contract.
- </action>
- <action issue="LOG4J2-1062" dev="ggregory" type="fix">
- Log4jMarker#add(Marker) does not respect org.slf4j.Marker contract.
- </action>
- <action issue="LOG4J2-1064" dev="ggregory" type="fix">
- org.apache.logging.slf4j.Log4jMarker does not implement org.slf4j.Marker.equals(Object) org.slf4j.Marker.hashCode().
- </action>
- <action issue="LOG4J2-889" dev="rpopma" type="fix" due-to="Maciej Kara\u015b, Kenneth Leider">
- Header in layout should not be written on application startup if appending to an existing file. Fixes LOG4J2-1030.
- </action>
- <action issue="LOG4J2-918" dev="rpopma" type="fix">
- Clarify documentation for combining async with sync loggers.
- </action>
- <action issue="LOG4J2-1078" dev="ggregory" type="fix" due-to="Mikael St�ldal">
- GelfLayout throws exception if some log event fields are null.
- </action>
- <action issue="LOG4J2-1044" dev="rgoers" type="update">
- Support batchSize in FlumeAvroManager.
- </action>
- <action issue="LOG4J2-1065" dev="ggregory" type="update">
- Define org.apache.logging.log4j.Marker.equals(Object) and org.apache.logging.log4j.Marker.hashCode().
- </action>
- <action issue="LOG4J2-1063" dev="ggregory" type="update">
- Avoid creating temporary array object in org.apache.logging.slf4j.Log4jMarker.iterator().
- </action>
- <action issue="LOG4J2-890" dev="ggregory" type="update" due-to="Hassan Kalaldeh, Robert Andersson, Remko Popma">
- log4j-web-2.1 should workaround a bug in JBOSS EAP 6.2.
- </action>
- <action issue="LOG4J2-403" dev="ggregory" type="update" due-to="Poorna Subhash P, Jeremy Lautman">
- MongoDB appender, username and password should be optional.
- </action>
- <action issue="LOG4J2-1035" dev="ggregory" type="update">
- Log4j2 tries to SystemClassLoader when running on Google AppEngine.
- </action>
- <action issue="LOG4J2-1022" dev="rgoers" type="update">
- Allow a list of keys to be specified in the MDC pattern converter.
- </action>
- <action issue="LOG4J2-959" dev="ggregory" type="update">
- Fix FindBugs DM_DEFAULT_ENCODING bug in SimpleLogger.logMessage() and simplify code.
- </action>
- <action issue="LOG4J2-1036" dev="ggregory" type="update">
- Update Apache Flume from 1.5.2 to 1.6.0.
- </action>
- <action issue="LOG4J2-1041" dev="ggregory" type="update">
- Update MongoDB driver from 2.11.2 to 2.13.2.
- </action>
- <action issue="LOG4J2-1018" dev="ggregory" type="update">
- Update database tests from H2 1.3.175 to 1.3.176.
- </action>
- <action issue="LOG4J2-1070" dev="ggregory" type="update">
- Update Java Mail from 1.5.2 to 1.5.4.
- </action>
- <action issue="LOG4J2-1079" dev="ggregory" type="update">
- Update Jackson from 2.5.3 to 2.5.4.
- </action>
- <action issue="LOG4J2-1879" dev="ggregory" type="update">
- Update Jackson from 2.5.4 to 2.6.0.
- </action>
- <action issue="LOG4J2-1092" dev="ggregory" type="update">
- Update Jackson from 2.6.0 to 2.6.1.
- </action>
- <action issue="LOG4J2-1104" dev="ggregory" type="update">
- Update Apache Commons Compress from 1.9 to 1.10.
- </action>
- </release>
- <release version="2.3" date="2015-05-09" description="GA Release 2.3">
- <action issue="LOG4J2-1009" dev="ggregory" type="fix" due-to="Mikael St�ldal">
- Incorrectly defined compressionType parameter to GelfLayout.
- </action>
- <action issue="LOG4J2-1008" dev="ggregory" type="fix" due-to="Ralph Goers, Gary Gregory">
- org.apache.logging.log4j.core.config.plugins.util.ResolverUtil.extractPath(URL) incorrectly converts '+' characters to spaces.
- </action>
- <action issue="LOG4J2-1007" dev="ggregory" type="fix" due-to="Ralph Goers, Gary Gregory">
- org.apache.logging.log4j.core.util#fileFromUri(URI uri) incorrectly converts '+' characters to spaces.
- </action>
- <action issue="LOG4J2-1003" dev="ggregory" type="fix" due-to="Dan Armbrust">
- JUL Logger.throwing is mis-mapped to ERROR when it should be TRACE.
- </action>
- <action issue="LOG4J2-965" dev="ggregory" type="fix" due-to="Khotyn Huang">
- System.out no longer works after the Console appender and JANSI are initialized.
- </action>
- <action issue="LOG4J2-998" dev="ggregory" type="update" due-to="Mariano Gonzalez">
- Make org.apache.logging.log4j.core.Logger#updateConfiguration protected.
- </action>
- <action issue="LOG4J2-995" dev="rgoers" type="update">
- Move UTF-8 constant from Charsets to Constants class. Remove Charsets class.
- </action>
- <action issue="LOG4J2-993" dev="rgoers" type="fix">
- Deadlock would occur if appender thread creates a new Logger during reconfiguration.
- </action>
- <action issue="LOG4J2-991" dev="rpopma" type="fix" due-to="Ryan Rupp">
- Async root logger config should default includeLocation to false.
- </action>
- <action issue="LOG4J2-985" dev="rpopma" type="fix" due-to="Sean Dawson">
- AbstractFilter should not implement equals() and hashCode().
- </action>
- <action issue="LOG4J2-984" dev="ggregory" type="add" due-to="Jonas H�pfner">
- PatternLayout %highlight to support noConsoleNoAnsi like %style.
- </action>
- <action issue="LOG4J2-926" dev="ggregory" type="add" due-to="David Ohana">
- Truncate from the end of text format modifier.
- </action>
- <action issue="LOG4J2-980" dev="ggregory" type="fix" due-to="Mikhail Mazurskiy">
- Numerical overflow in BurstFilter not handled correctly.
- </action>
- <action issue="LOG4J2-981" dev="ggregory" type="fix" due-to="Mikhail Mazurskiy">
- Incorrect unlock in ProviderUtil.
- </action>
- <action issue="LOG4J2-966" dev="ggregory" type="fix">
- KeyStoreConfiguration.createKeyStoreConfiguration() ignores keyManagerFactoryAlgorithm.
- </action>
- <action issue="LOG4J2-976" dev="ggregory" type="fix" due-to="Matt Quinn">
- Using monitorInterval with YAML config file format causes JSONParseException.
- </action>
- <action issue="LOG4J2-964" dev="ggregory" type="fix" due-to="Jonne Jyryl�">
- StringFormattedMessage serialization is incorrect.
- </action>
- <action issue="LOG4J2-947" dev="ggregory" type="fix" due-to="Stefan Wehner">
- A new StatusLoggerAdmin listener is added to StatusLogger every time the log is reconfigured.
- </action>
- <action issue="LOG4J2-968" dev="ggregory" type="fix" due-to="Paul D Johe">
- SyslogLayout contains extra space.
- </action>
- <action issue="LOG4J2-967" dev="ggregory" type="fix" due-to="Stefan Wehner">
- log4j2.component.properties not read for all properties.
- </action>
- <action issue="LOG4J2-971" dev="ggregory" type="fix" due-to="Paul D Johe">
- Another bad priority in Syslog messages.
- </action>
- <action issue="LOG4J2-972" dev="ggregory" type="fix">
- org.apache.logging.log4j.core.net.ssl.TlsSyslogInputStreamReader does not need to create temp Integer objects.
- </action>
- <action issue="LOG4J2-974" dev="ggregory" type="fix" due-to="Daniel Gal�n y Martins">
- Typo in EventLogger documentation.
- </action>
- <action issue="LOG4J2-988" dev="ggregory" type="update">
- Update LMAX Disruptor from 3.3.0 to 3.3.2.
- </action>
- <action issue="LOG4J2-987" dev="ggregory" type="update">
- Migrate tests from Logback 1.1.2 to 1.1.3.
- </action>
- <action issue="LOG4J2-988" dev="ggregory" type="update">
- Update tests to use ActiveMQ from 5.10 to 5.11.1.
- </action>
- <action issue="LOG4J2-1004" dev="ggregory" type="update">
- Update Jackson from 2.5.1 to 2.5.3.
- </action>
- <action issue="LOG4J2-1005" dev="ggregory" type="update">
- Update Slf4j from 1.7.7 to 1.7.12.
- </action>
- </release>
- <release version="2.2" date="2015-02-22" description="GA Release 2.2">
- <action issue="LOG4J2-938" dev="rpopma" type="fix" due-to="Mauro Molinari">
- (JMX) To avoid memory leaks when web applications are restarted, JMX notifications are sent from
- the caller thread in web applications. For non-web applications notifications are sent from a background thread
- as before.
- </action>
- <action issue="LOG4J2-957" dev="ggregory" type="fix" due-to="fatih guleryuz">
- Missing toUpperCase(Locale.ENGLISH).
- </action>
- <action issue="LOG4J2-956" dev="ggregory" type="fix" due-to="David Kellerman">
- Manual refers to Route "AppenderRef" attribute, should be "ref".
- </action>
- <action issue="LOG4J2-955" dev="rpopma" type="update">
- Documentation: clarify system properties to control status logger, improve troubleshooting FAQ entry.
- </action>
- <action issue="LOG4J2-950" dev="ggregory" type="update" due-to="Joel Edwards">
- Incorrect attribute name in PropertiesRewritePolicy example.
- </action>
- <action issue="LOG4J2-944" dev="ggregory" type="fix" due-to="Vinayaka Ramachandra">
- Log4j Flume appender is not adding millisecond to the event headers when the event is logged at 000 milliseconds.
- </action>
- <action issue="LOG4J2-941" dev="ggregory" type="add" due-to="Konstantinos Liakos">
- Allow JSON layout to create one compact log record per line.
- </action>
- <action issue="LOG4J2-933" dev="ggregory" type="add" due-to="ppiman at gmail.com">
- HTML layout should not use attribute minimalization for hr noshade.
- </action>
- <action issue="LOG4J2-895" dev="ggregory" type="add">
- Specify the SyslogAppender connect timeout value as part of the configuration.
- The SyslogAppender takes a new parameter connectTimeoutMillis.
- </action>
- <action issue="LOG4J2-899" dev="ggregory" type="add">
- Specify the SocketAppender connect timeout value as part of the configuration.
- The SyslogAppender takes a new parameter connectTimeoutMillis.
- </action>
- <action issue="LOG4J2-924" dev="ggregory" type="fix" due-to="Ryan Rupp">
- Log4j 1.2 Bridge doesn't map level ALL correctly in Category.getEffectiveLevel().
- </action>
- <action issue="LOG4J2-931" dev="ggregory" type="fix" due-to="Robert Gacki">
- ConsoleAppender is missing @PluginFactory annotation at createAppender method.
- </action>
- <action issue="LOG4J2-919" dev="ggregory" type="fix" due-to="David Johle">
- Logging system fails to initialize if XInclude API is not available.
- </action>
- <action issue="LOG4J2-914" dev="ggregory" type="fix" due-to="Kaj Bjurman">
- ThrowableProxy.getExtendedStackTraceAsString causes NullPointerException.
- </action>
- <action issue="LOG4J2-912" dev="ggregory" type="fix">
- XML configuration does not report full error message for XInclude parser configuration problems.
- </action>
- <action issue="LOG4J2-903" dev="ggregory" type="fix" due-to="Mauro Molinari">
- ClassLoaderContextSelector uses ClassLoader.toString() as a key
- </action>
- <action issue="LOG4J2-834" dev="ggregory" type="fix" due-to="Nikita Koval, Leonard Broman, Thiago Kronig">
- ThrowableProxy throws NoClassDefFoundError.
- </action>
- <action issue="LOG4J2-893" dev="ggregory" type="fix">
- NullPointerException on filter when mapping JUL to Log4j2.
- </action>
- <action issue="LOG4J2-892" dev="ggregory" type="fix">
- JUL adapter does not map Log4j'2 FATAL level to a JUL level.
- </action>
- <action issue="LOG4J2-881" dev="ggregory" type="fix" due-to="Mariano Gonzalez">
- AbstractLifecycle should not implement equals() and hashCode().
- </action>
- <action issue="LOG4J2-897" dev="ggregory" type="fix">
- Javadoc for org.apache.log4j.BasicConfigurator.configure() is incorrect.
- </action>
- <action issue="LOG4J2-891" dev="ggregory" type="fix">
- AbstractLifecycle should not implement equals() and hashCode().
- </action>
- <action issue="LOG4J2-946" dev="ggregory" type="fix" due-to="artemonster">
- [docs] Using Log4j 2 in Web Applications: Update example (Log4jWebLifeCycle is not visible).
- </action>
- <action issue="LOG4J2-901" dev="ggregory" type="update" due-to="Tihomir Me\u0161\u010di\u0107, Siegfried Greisinger">
- Update docs for SyslogAppender: "No structured id name was supplied"
- </action>
- <action issue="LOG4J2-958" dev="ggregory" type="update">
- Update from Jackson 2.5.0 to 2.5.1.
- </action>
- <action issue="LOG4J2-925" dev="ggregory" type="update">
- Update from Jackson 2.4.4 to 2.5.0.
- </action>
- <action issue="LOG4J2-910" dev="ggregory" type="update">
- Update Jackson from 2.4.3 to 2.4.4.
- </action>
- <action issue="LOG4J2-881" dev="ggregory" type="update">
- Update Jackson from 2.4.2 to 2.4.3.
- </action>
- <action issue="LOG4J2-882" dev="ggregory" type="update">
- Update maven-core from 3.1.0 to 3.2.3.
- </action>
- <action issue="LOG4J2-883" dev="ggregory" type="update">
- Update tests from org.apache.felix.framework 4.2.1 to 4.4.1.
- </action>
- <action issue="LOG4J2-884" dev="ggregory" type="update">
- Update org.eclipse.osgi from 3.6.0 to 3.7.1.
- </action>
- <action issue="LOG4J2-900" dev="ggregory" type="update">
- Update Apache Flume from 1.5.0.1 to 1.5.2.
- </action>
- </release>
- <release version="2.1" date="2014-10-19" description="GA Release 2.1">
- <action issue="LOG4J2-676" dev="rgoers" type="fix" due-to="Stefan Bodewig">
- Some typo fixes and enhancements for the site.
- </action>
- <action issue="LOG4J2-868" dev="mattsicker" type="add">
- Add ShutdownCallbackRegistry interface for customizable shutdown callback handling. This is particularly
- useful for application servers that wish to integrate with Log4j 2.
- </action>
- <action issue="LOG4J2-866" dev="rpopma" type="fix" due-to="Gerard Weatherby">
- Documentation: fixed missing closing parenthesis in code example.
- </action>
- <action issue="LOG4J2-862" dev="mattsicker" type="fix" due-to="Michael Sutherland">
- Fixed classloader issue that prevented Log4j from finding the implementation when used in a custom Ant task.
- </action>
- <action issue="LOG4J2-589" dev="rpopma" type="add">
- Supported filtering on custom log levels in configuration.
- </action>
- <action issue="LOG4J2-861" dev="rpopma" type="fix">
- Documentation: fix broken links on left navigation Extending Log4j Configuration sub-menu.
- </action>
- <action issue="LOG4J2-856" dev="rpopma" type="add">
- Documentation: add sections on the JUL Adapter, IO Streams and NoSQL Appenders to the Maven and Ivy page.
- </action>
- <action issue="LOG4J2-797" dev="rpopma" type="fix" due-to="Andreas Rytina">
- Documentation: clarified why log4j-core is a compile time dependency in Maven and Ivy page.
- </action>
- <action issue="LOG4J2-855" dev="rpopma" type="fix">
- Documentation: fix broken links on Appenders manual page.
- </action>
- <action issue="LOG4J2-807" dev="rpopma" type="fix">
- Prevent NPE when configuration with AsyncLogger/AsyncRoot is reloaded.
- </action>
- <action issue="LOG4J2-848" dev="ggregory" type="add">
- Add a Java lookup to provide nicely formatted runtime version information.
- </action>
- <action issue="LOG4J2-809" dev="mattsicker" type="add">
- Move reflection utility class to API's private utility classes.
- </action>
- <action issue="LOG4J2-845" dev="mattsicker" type="update">
- Add 2.1.0 to compatible versions in Log4j API ProviderUtil and update Log4jAPIVersion to 2.1.0 in
- core META-INF/log4j-provider.properties.
- </action>
- <action issue="LOG4J2-833" dev="rpopma" type="add">
- Documentation: added Runtime Dependencies link to left nav-bar on site.
- </action>
- <action issue="LOG4J2-816" dev="rpopma" type="add">
- Documentation: added section on XInclude to user manual Configuration page.
- </action>
- <action issue="LOG4J2-678" dev="rpopma" type="fix" due-to="Matt Sicker">
- Documentation: fixed minor issues with Log4j2 web site/documentation.
- </action>
- <action issue="LOG4J2-844" dev="rpopma" type="update">
- Update JMH to 1.1 from 0.7.2.
- </action>
- <action issue="LOG4J2-843" dev="rpopma" type="fix">
- Migrate JpaHyperSqlAppenderTest JUnit performance test to log4j-perf.
- </action>
- <action issue="LOG4J2-842" dev="rpopma" type="fix">
- Migrate JpaH2AppenderTest JUnit performance test to log4j-perf.
- </action>
- <action issue="LOG4J2-841" dev="rpopma" type="fix">
- Migrate JdbcHyperSqlAppenderTest JUnit performance test to log4j-perf.
- </action>
- <action issue="LOG4J2-840" dev="rpopma" type="fix">
- Migrate JdbcH2AppenderTest JUnit performance test to log4j-perf.
- </action>
- <action issue="LOG4J2-830" dev="rpopma" type="fix">
- Respect external interrupt signal to allow application shutdown after joining AsyncAppender thread.
- </action>
- <action issue="LOG4J2-813" dev="ggregory" type="fix" due-to="David Erichsen, Brandon Barry">
- MarkerManager Log4jMarker.hasParents() returns opposite of correct result.
- </action>
- <action issue="LOG4J2-785" dev="rpopma" type="fix">
- Documentation: fixed capitalization inconsistency in user manual example config.
- </action>
- <action issue="LOG4J2-829" dev="rpopma" type="fix">
- Fixed issue in RollingFile filePattern: backslashes are path separators, not escape characters.
- </action>
- <action issue="LOG4J2-547" dev="mattsicker" type="add">
- Add the Log4j IOStreams component.
- </action>
- <action issue="LOG4J2-431" dev="rpopma" type="add" due-to="Claude Mamo">
- Added Memory-Mapped File Appender.
- </action>
- <action issue="LOG4J2-832" dev="ggregory" type="fix" due-to="Seth Leger">
- ThrowableProxy fails if a class in logged stack trace throws java.lang.Error from initializer
- </action>
- <action issue="LOG4J2-831" dev="rpopma" type="update">
- Documentation: updated FAQ "which jars" diagrams for JUL bridge and 2.1 version.
- </action>
- <action issue="LOG4J2-827" dev="mattsicker" type="add">
- Support use of TypeConverter classes through the standard Plugin system.
- </action>
- <action issue="LOG4J2-745" dev="mattsicker" type="fix" due-to="Scott Harrington">
- Avoid ConverterKey plugin clashes by using a more predictable plugin loading infrastructure.
- Plugins have been segmented into three parts: class path, user-specified packages, and OSGi bundles.
- </action>
- <action issue="LOG4J2-798" dev="mattsicker" type="fix" due-to="Scott Harrington">
- Fixed plugin scanning redundancy causing massive slowdowns in certain environments.
- </action>
- <action issue="LOG4J2-753" dev="rpopma" type="fix">
- Reduced CachedClock thread contention.
- </action>
- <action issue="LOG4J2-819" dev="mattsicker" type="fix" due-to="Gary Gregory">
- Fixed memory leak in Tomcat 6 caused by clock background threads unintentionally
- started by Tomcat after web application stop.
- </action>
- <action issue="LOG4J2-825" dev="mattsicker" type="add">
- Add simple validation constraint annotations for the Plugin system.
- </action>
- <action issue="LOG4J2-428" dev="ggregory" type="add" due-to="Mark Paluch, Mikael St�ldal">
- Implement a GELF layout.
- </action>
- <action issue="LOG4J2-391" dev="rgoers" type="fix" due-to="Kamal Bahadur">
- FlumePersistentManager now handles LockConflictExceptions in Berkeley Db when sending a batch.
- </action>
- <action issue="LOG4J2-782" dev="mattsicker" type="fix">
- Remove invalid Oracle Maven repository.
- </action>
- <action issue="LOG4J2-780" dev="mattsicker" type="update">
- Update Spring Framework to 3.2.11.RELEASE from 3.2.8.RELEASE.
- </action>
- <action issue="LOG4J2-815" dev="mattsicker" type="update">
- Unify the two JMS appenders into a single appender. Configurations
<TRUNCATED>
[3/9] logging-log4j2 git commit: Merge branch 'master' into
LOG4J2-1623
Posted by mi...@apache.org.
Merge branch 'master' into LOG4J2-1623
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/94465257
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/94465257
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/94465257
Branch: refs/heads/master
Commit: 94465257cc0e2c3645ce08a72c1dbb64b63ae282
Parents: 2153a26 ce86130
Author: Mikael St�ldal <mi...@magine.com>
Authored: Wed Oct 5 13:01:28 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Wed Oct 5 13:01:28 2016 +0200
----------------------------------------------------------------------
BUILDING.txt | 4 ++++
1 file changed, 4 insertions(+)
----------------------------------------------------------------------
[2/9] logging-log4j2 git commit: LOG4J2-1623 Fix XML schema for
configuration file
Posted by mi...@apache.org.
LOG4J2-1623 Fix XML schema for configuration file
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/2153a262
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/2153a262
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/2153a262
Branch: refs/heads/master
Commit: 2153a2621a7ccfa8e9eb006ae8482e8d8dfbc6bc
Parents: 705e272
Author: Mikael St�ldal <mi...@magine.com>
Authored: Tue Oct 4 12:04:15 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Tue Oct 4 12:04:15 2016 +0200
----------------------------------------------------------------------
log4j-core/src/main/resources/Log4j-config.xsd | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2153a262/log4j-core/src/main/resources/Log4j-config.xsd
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/resources/Log4j-config.xsd b/log4j-core/src/main/resources/Log4j-config.xsd
index af13d71..e75cb9e 100644
--- a/log4j-core/src/main/resources/Log4j-config.xsd
+++ b/log4j-core/src/main/resources/Log4j-config.xsd
@@ -38,6 +38,7 @@
<xs:attribute name="strict" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="advertiser" type="xs:string"/>
+ <xs:attribute name="shutdownTimeout" type="xs:string" use="optional"/>
<xs:attribute name="schema" type="xs:string"/>
</xs:complexType>
<xs:complexType name="PropertiesType">
[4/9] logging-log4j2 git commit: LOG4J2-1623 Update documentation
Posted by mi...@apache.org.
LOG4J2-1623 Update documentation
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/5564556c
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/5564556c
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/5564556c
Branch: refs/heads/master
Commit: 5564556cd81be70926d6f35a2ff323f623728f5a
Parents: 9446525
Author: Mikael St�ldal <mi...@magine.com>
Authored: Wed Oct 5 13:35:41 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Wed Oct 5 13:35:41 2016 +0200
----------------------------------------------------------------------
.../org/apache/logging/log4j/core/LoggerContext.java | 12 ++++++++++++
src/site/xdoc/manual/configuration.xml.vm | 9 +++++++--
2 files changed, 19 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5564556c/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
index c964965..2681485 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
@@ -302,6 +302,18 @@ public class LoggerContext extends AbstractLifeCycle
stop();
}
+ /**
+ * How many milliseconds appenders and other plugins will get to shutdown.
+ *
+ * Not all plugins will honor this, it is a hint and not an absolute guarantee that the this method not block longer.
+ * Setting timeout too low increase the risk of losing outstanding log events not yet written to the final
+ * destination.
+ *
+ * @param timeout the maximum time to wait, or 0 which mean that each plugin uses its default timeout
+ * @param timeUnit the time unit of the timeout argument
+ * @return true if the context was stopped cleanly and normally, false otherwise.
+ * @since 2.7
+ */
@Override
public boolean stop(final long timeout, final TimeUnit timeUnit) {
LOGGER.debug("Stopping LoggerContext[name={}, {}]...", getName(), this);
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5564556c/src/site/xdoc/manual/configuration.xml.vm
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/configuration.xml.vm b/src/site/xdoc/manual/configuration.xml.vm
index acd41fd..2b59e8d 100644
--- a/src/site/xdoc/manual/configuration.xml.vm
+++ b/src/site/xdoc/manual/configuration.xml.vm
@@ -409,8 +409,13 @@ public class Bar {
</tr>
<tr>
<td>shutdownTimeout</td>
- <td>Specifies how many milliseconds appenders and other plugins will get to shutdown when the JVM shuts down.
- Default is zero. (Not used if <tt>shutdownHook</tt> is set to "disable".)</td>
+ <td>Specifies how many milliseconds appenders and other plugins will get to shutdown when the JVM shuts
+ down. Default is zero which mean that each plugin uses its default timeout. Not all plugins will honor
+ this, it is a hint and not an absolute guarantee that the shutdown procedure will not take longer.
+ Setting this too low increase the risk of losing outstanding log events not yet written to the final
+ destination. See <a class="javadoc"
+ href="../log4j-core/target/site/apidocs/org/apache/logging/log4j/core/LoggerContext.html#stop(long, java.util.concurrent.TimeUnit)">LoggerContext.stop(long, java.util.concurrent.TimeUnit)</a>.
+ (Not used if <tt>shutdownHook</tt> is set to "disable".)</td>
<tr>
<td>status</td>
<td>The level of internal Log4j events that should be logged to the console.