[LOG4J2-1540] The Core AbstractManager should track its LoggerContext. All appenders created with a Configuration object in their respective factories now pass that configuration's logger context to the managers they create. If an appender is not given a Configuration, it cannot set the logger context for its manager and it will be null.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/72259095 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/72259095 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/72259095 Branch: refs/heads/LOG4J2-1528 Commit: 722590956277af42d00089c67ca72a52c446a7b4 Parents: da5d6f3 Author: Gary Gregory <ggreg...@apache.org> Authored: Fri Aug 26 08:08:10 2016 -0700 Committer: Gary Gregory <ggreg...@apache.org> Committed: Fri Aug 26 08:08:10 2016 -0700 ---------------------------------------------------------------------- .../log4j/core/appender/AbstractManager.java | 17 ++++++- .../core/appender/ConfigurationFactoryData.java | 50 ++++++++++++++++++++ .../log4j/core/appender/FileAppender.java | 12 ++--- .../log4j/core/appender/FileManager.java | 30 +++++++----- .../core/appender/OutputStreamManager.java | 12 ++--- .../core/appender/RandomAccessFileAppender.java | 2 +- .../core/appender/RandomAccessFileManager.java | 27 ++++++----- .../core/appender/RollingFileAppender.java | 16 +++---- .../RollingRandomAccessFileAppender.java | 2 +- .../log4j/core/appender/WriterManager.java | 2 +- .../appender/db/AbstractDatabaseManager.java | 2 +- .../log4j/core/appender/mom/JmsManager.java | 2 +- .../core/appender/mom/jeromq/JeroMqManager.java | 2 +- .../core/appender/mom/kafka/KafkaManager.java | 2 +- .../appender/rolling/RollingFileManager.java | 35 +++++++------- .../rolling/RollingRandomAccessFileManager.java | 32 ++++++++----- .../logging/log4j/core/net/JndiManager.java | 2 +- .../logging/log4j/core/net/SmtpManager.java | 2 +- .../appender/RandomAccessFileManagerTest.java | 18 +++---- .../rolling/OnStartupTriggeringPolicyTest.java | 2 +- .../RollingRandomAccessFileManagerTest.java | 24 +++++----- .../flume/appender/AbstractFlumeManager.java | 2 +- src/changes/changes.xml | 3 ++ 23 files changed, 192 insertions(+), 106 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java index 4c78e7f..4d7fc69 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java @@ -23,6 +23,7 @@ import java.util.concurrent.locks.ReentrantLock; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.message.Message; import org.apache.logging.log4j.status.StatusLogger; @@ -48,8 +49,11 @@ public abstract class AbstractManager { protected int count; private final String name; + + private final LoggerContext loggerContext; - protected AbstractManager(final String name) { + protected AbstractManager(final LoggerContext loggerContext, final String name) { + this.loggerContext = loggerContext; this.name = name; LOGGER.debug("Starting {} {}", this.getClass().getSimpleName(), name); } @@ -117,6 +121,17 @@ public abstract class AbstractManager { } /** + * Gets the logger context used to create this instance or null. The logger context is usually set when an appender + * creates a manager and that appender is given a Configuration. Not all appenders are given a Configuration by + * their factory method or builder. + * + * @return the logger context used to create this instance or null. + */ + public LoggerContext getLoggerContext() { + return loggerContext; + } + + /** * Called to signify that this Manager is no longer required by an Appender. */ public void release() { http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConfigurationFactoryData.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConfigurationFactoryData.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConfigurationFactoryData.java new file mode 100644 index 0000000..e2c20d4 --- /dev/null +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConfigurationFactoryData.java @@ -0,0 +1,50 @@ +/* + * 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.appender; + +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; + +/** + * Factory Data that carries a configuration. + */ +public class ConfigurationFactoryData { + + /** + * This field is public to follow the style of existing FactoryData classes. + */ + public final Configuration configuration; + + public ConfigurationFactoryData(Configuration configuration) { + super(); + this.configuration = configuration; + } + + public Configuration getConfiguration() { + return configuration; + } + + /** + * Gets the LoggerContext from the Configuration or null. + * + * @return the LoggerContext from the Configuration or null. + */ + public LoggerContext getLoggerContext() { + return configuration != null ? configuration.getLoggerContext() : null; + } + +} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java index 736714d..b42f9da 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java @@ -73,7 +73,7 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager private boolean createOnDemand; @PluginConfiguration - private Configuration config; + private Configuration configuration; @Override public FileAppender build() { @@ -87,13 +87,13 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager Layout<? extends Serializable> layout = getOrCreateLayout(); final FileManager manager = FileManager.getFileManager(fileName, append, locking, bufferedIo, createOnDemand, - advertiseUri, layout, bufferSize, isImmediateFlush()); + advertiseUri, layout, bufferSize, isImmediateFlush(), configuration); if (manager == null) { return null; } return new FileAppender(getName(), layout, getFilter(), manager, fileName, isIgnoreExceptions(), - !bufferedIo || isImmediateFlush(), advertise ? config.getAdvertiser() : null); + !bufferedIo || isImmediateFlush(), advertise ? configuration.getAdvertiser() : null); } public String getAdvertiseUri() { @@ -104,8 +104,8 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager return bufferSize; } - public Configuration getConfig() { - return config; + public Configuration getConfiguration() { + return configuration; } public String getFileName() { @@ -158,7 +158,7 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager } public B withConfiguration(final Configuration config) { - this.config = config; + this.configuration = config; return asBuilder(); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java index 2b9024b..33a2300 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java @@ -29,6 +29,8 @@ import java.util.HashMap; import java.util.Map; import org.apache.logging.log4j.core.Layout; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.util.Constants; @@ -72,13 +74,12 @@ public class FileManager extends OutputStreamManager { } /** - * @throws IOException * @since 2.7 */ - protected FileManager(final String fileName, final OutputStream os, final boolean append, final boolean locking, final boolean createOnDemand, - final String advertiseURI, final Layout<? extends Serializable> layout, final boolean writeHeader, - final ByteBuffer buffer) throws IOException { - super(os, fileName, createOnDemand, layout, writeHeader, buffer); + protected FileManager(LoggerContext loggerContext, final String fileName, final OutputStream os, final boolean append, final boolean locking, + final boolean createOnDemand, final String advertiseURI, final Layout<? extends Serializable> layout, + final boolean writeHeader, final ByteBuffer buffer) { + super(loggerContext, os, fileName, createOnDemand, layout, writeHeader, buffer); this.isAppend = append; this.createOnDemand = createOnDemand; this.isLocking = locking; @@ -97,18 +98,19 @@ public class FileManager extends OutputStreamManager { * @param layout The layout * @param bufferSize buffer size for buffered IO * @param immediateFlush true if the contents should be flushed on every write, false otherwise. + * @param configuration The configuration. * @return A FileManager for the File. */ public static FileManager getFileManager(final String fileName, final boolean append, boolean locking, final boolean bufferedIo, final boolean createOnDemand, final String advertiseUri, - final Layout<? extends Serializable> layout, final int bufferSize, final boolean immediateFlush) { + final Layout<? extends Serializable> layout, final int bufferSize, final boolean immediateFlush, + Configuration configuration) { if (locking && bufferedIo) { locking = false; } - return (FileManager) getManager(fileName, - new FactoryData(append, locking, bufferedIo, bufferSize, immediateFlush, createOnDemand, advertiseUri, layout), - FACTORY); + return (FileManager) getManager(fileName, new FactoryData(append, locking, bufferedIo, bufferSize, + immediateFlush, createOnDemand, advertiseUri, layout, configuration), FACTORY); } @Override @@ -198,7 +200,7 @@ public class FileManager extends OutputStreamManager { /** * Factory Data. */ - private static class FactoryData { + private static class FactoryData extends ConfigurationFactoryData { private final boolean append; private final boolean locking; private final boolean bufferedIO; @@ -218,10 +220,12 @@ public class FileManager extends OutputStreamManager { * @param createOnDemand if you want to lazy-create the file (a.k.a. on-demand.) * @param advertiseURI the URI to use when advertising the file * @param layout The layout + * @param configuration the configuration */ public FactoryData(final boolean append, final boolean locking, final boolean bufferedIO, final int bufferSize, final boolean immediateFlush, final boolean createOnDemand, final String advertiseURI, - final Layout<? extends Serializable> layout) { + final Layout<? extends Serializable> layout, Configuration configuration) { + super(configuration); this.append = append; this.locking = locking; this.bufferedIO = bufferedIO; @@ -257,8 +261,8 @@ public class FileManager extends OutputStreamManager { final int actualSize = data.bufferedIO ? data.bufferSize : Constants.ENCODER_BYTE_BUFFER_SIZE; final ByteBuffer buffer = ByteBuffer.wrap(new byte[actualSize]); final FileOutputStream fos = data.createOnDemand ? null : new FileOutputStream(file, data.append); - return new FileManager(name, fos, data.append, data.locking, data.createOnDemand, data.advertiseURI, data.layout, - writeHeader, buffer); + return new FileManager(data.getLoggerContext(), name, fos, data.append, data.locking, + data.createOnDemand, data.advertiseURI, data.layout, writeHeader, buffer); } catch (final IOException ex) { LOGGER.error("FileManager (" + name + ") " + ex, ex); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java index e5960ee..698409a 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java @@ -23,6 +23,7 @@ import java.nio.ByteBuffer; import java.util.Objects; import org.apache.logging.log4j.core.Layout; +import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.layout.ByteBufferDestination; import org.apache.logging.log4j.core.util.Constants; @@ -49,7 +50,7 @@ public class OutputStreamManager extends AbstractManager implements ByteBufferDe @Deprecated protected OutputStreamManager(final OutputStream os, final String streamName, final Layout<?> layout, final boolean writeHeader, final ByteBuffer byteBuffer) { - super(streamName); + super(null, streamName); this.os = os; this.layout = layout; if (writeHeader && layout != null) { @@ -66,13 +67,12 @@ public class OutputStreamManager extends AbstractManager implements ByteBufferDe } /** - * @throws IOException * @since 2.7 */ - protected OutputStreamManager(OutputStream os, final String streamName, final boolean createOnDemand, - final Layout<? extends Serializable> layout, final boolean writeHeader, final ByteBuffer byteBuffer) - throws IOException { - super(streamName); + protected OutputStreamManager(final LoggerContext loggerContext, OutputStream os, final String streamName, + final boolean createOnDemand, final Layout<? extends Serializable> layout, final boolean writeHeader, + final ByteBuffer byteBuffer) { + super(loggerContext, streamName); if (createOnDemand && os != null) { LOGGER.error( "Invalid OutputStreamManager configuration for '{}': You cannot both set the OutputStream and request on-demand.", http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java index 738816d..543c702 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java @@ -164,7 +164,7 @@ public final class RandomAccessFileAppender extends AbstractOutputStreamAppender layout = PatternLayout.createDefaultLayout(); } final RandomAccessFileManager manager = RandomAccessFileManager.getFileManager( - fileName, isAppend, isFlush, bufferSize, advertiseURI, layout + fileName, isAppend, isFlush, bufferSize, advertiseURI, layout, null ); if (manager == null) { return null; http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java index c87bdf3..7ab0fe3 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java @@ -26,6 +26,8 @@ import java.util.HashMap; import java.util.Map; import org.apache.logging.log4j.core.Layout; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.util.NullOutputStream; /** @@ -42,10 +44,10 @@ public class RandomAccessFileManager extends OutputStreamManager { private final RandomAccessFile randomAccessFile; private final ThreadLocal<Boolean> isEndOfBatch = new ThreadLocal<>(); - protected RandomAccessFileManager(final RandomAccessFile file, - final String fileName, final OutputStream os, final int bufferSize, - final String advertiseURI, final Layout<? extends Serializable> layout, final boolean writeHeader) { - super(os, fileName, layout, writeHeader, ByteBuffer.wrap(new byte[bufferSize])); + protected RandomAccessFileManager(LoggerContext loggerContext, final RandomAccessFile file, final String fileName, + final OutputStream os, final int bufferSize, final String advertiseURI, + final Layout<? extends Serializable> layout, final boolean writeHeader) { + super(loggerContext, os, fileName, false, layout, writeHeader, ByteBuffer.wrap(new byte[bufferSize])); this.randomAccessFile = file; this.advertiseURI = advertiseURI; this.isEndOfBatch.set(Boolean.FALSE); @@ -62,13 +64,14 @@ public class RandomAccessFileManager extends OutputStreamManager { * @param bufferSize The buffer size. * @param advertiseURI the URI to use when advertising the file * @param layout The layout. + * @param configuration The configuration. * @return A RandomAccessFileManager for the File. */ public static RandomAccessFileManager getFileManager(final String fileName, final boolean append, final boolean isFlush, final int bufferSize, final String advertiseURI, - final Layout<? extends Serializable> layout) { + final Layout<? extends Serializable> layout, Configuration configuration) { return (RandomAccessFileManager) getManager(fileName, new FactoryData(append, - isFlush, bufferSize, advertiseURI, layout), FACTORY); + isFlush, bufferSize, advertiseURI, layout, configuration), FACTORY); } public Boolean isEndOfBatch() { @@ -140,7 +143,7 @@ public class RandomAccessFileManager extends OutputStreamManager { /** * Factory Data. */ - private static class FactoryData { + private static class FactoryData extends ConfigurationFactoryData { private final boolean append; private final boolean immediateFlush; private final int bufferSize; @@ -152,9 +155,11 @@ public class RandomAccessFileManager extends OutputStreamManager { * * @param append Append status. * @param bufferSize size of the buffer + * @param configuration The configuration. */ - public FactoryData(final boolean append, final boolean immediateFlush, - final int bufferSize, final String advertiseURI, final Layout<? extends Serializable> layout) { + public FactoryData(final boolean append, final boolean immediateFlush, final int bufferSize, + final String advertiseURI, final Layout<? extends Serializable> layout, Configuration configuration) { + super(configuration); this.append = append; this.immediateFlush = immediateFlush; this.bufferSize = bufferSize; @@ -197,8 +202,8 @@ public class RandomAccessFileManager extends OutputStreamManager { } else { raf.setLength(0); } - return new RandomAccessFileManager(raf, name, os, - data.bufferSize, data.advertiseURI, data.layout, writeHeader); + return new RandomAccessFileManager(data.getLoggerContext(), raf, name, + os, data.bufferSize, data.advertiseURI, data.layout, writeHeader); } catch (final Exception ex) { LOGGER.error("RandomAccessFileManager (" + name + ") " + ex, ex); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java index 899ddca..f8f66f2 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java @@ -94,7 +94,7 @@ public final class RollingFileAppender extends AbstractOutputStreamAppender<Roll private boolean createOnDemand; @PluginConfiguration - private Configuration config; + private Configuration configuration; @Override public RollingFileAppender build() { @@ -126,17 +126,17 @@ public final class RollingFileAppender extends AbstractOutputStreamAppender<Roll if (strategy == null) { strategy = DefaultRolloverStrategy.createStrategy(null, null, null, - String.valueOf(Deflater.DEFAULT_COMPRESSION), null, true, config); + String.valueOf(Deflater.DEFAULT_COMPRESSION), null, true, configuration); } if (strategy == null) { strategy = DefaultRolloverStrategy.createStrategy(null, null, null, - String.valueOf(Deflater.DEFAULT_COMPRESSION), null, true, config); + String.valueOf(Deflater.DEFAULT_COMPRESSION), null, true, configuration); } final RollingFileManager manager = RollingFileManager.getFileManager(fileName, filePattern, append, bufferedIo, policy, strategy, advertiseUri, getLayout(), bufferSize, isImmediateFlush(), - createOnDemand); + createOnDemand, configuration); if (manager == null) { return null; } @@ -144,7 +144,7 @@ public final class RollingFileAppender extends AbstractOutputStreamAppender<Roll manager.initialize(); return new RollingFileAppender(getName(), getLayout(), getFilter(), manager, fileName, filePattern, - isIgnoreExceptions(), isImmediateFlush(), advertise ? config.getAdvertiser() : null); + isIgnoreExceptions(), isImmediateFlush(), advertise ? configuration.getAdvertiser() : null); } public String getAdvertiseUri() { @@ -155,8 +155,8 @@ public final class RollingFileAppender extends AbstractOutputStreamAppender<Roll return bufferSize; } - public Configuration getConfig() { - return config; + public Configuration getConfiguration() { + return configuration; } public String getFileName() { @@ -209,7 +209,7 @@ public final class RollingFileAppender extends AbstractOutputStreamAppender<Roll } public B withConfiguration(final Configuration config) { - this.config = config; + this.configuration = config; return asBuilder(); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java index 67777e6..5e6f9c7 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java @@ -205,7 +205,7 @@ public final class RollingRandomAccessFileAppender extends AbstractOutputStreamA } final RollingRandomAccessFileManager manager = RollingRandomAccessFileManager.getRollingRandomAccessFileManager( - fileName, filePattern, isAppend, isFlush, bufferSize, policy, strategy, advertiseURI, layout); + fileName, filePattern, isAppend, isFlush, bufferSize, policy, strategy, advertiseURI, layout, config); if (manager == null) { return null; } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/WriterManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/WriterManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/WriterManager.java index 11ac856..b3b9e73 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/WriterManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/WriterManager.java @@ -46,7 +46,7 @@ public class WriterManager extends AbstractManager { public WriterManager(final Writer writer, final String streamName, final StringLayout layout, final boolean writeHeader) { - super(streamName); + super(null, streamName); this.writer = writer; this.layout = layout; if (writeHeader && layout != null) { http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java index 82c7b18..c3682dc 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java @@ -41,7 +41,7 @@ public abstract class AbstractDatabaseManager extends AbstractManager implements * @param bufferSize The size of the log event buffer. */ protected AbstractDatabaseManager(final String name, final int bufferSize) { - super(name); + super(null, name); this.bufferSize = bufferSize; this.buffer = new ArrayList<>(bufferSize + 1); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java index f5f42c9..7cf1637 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java @@ -52,7 +52,7 @@ public class JmsManager extends AbstractManager { private JmsManager(final String name, final JndiManager jndiManager, final String connectionFactoryName, final String destinationName, final String username, final String password) throws NamingException, JMSException { - super(name); + super(null, name); this.jndiManager = jndiManager; final ConnectionFactory connectionFactory = this.jndiManager.lookup(connectionFactoryName); if (username != null && password != null) { http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqManager.java index e84ab6d..6f106be 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqManager.java @@ -69,7 +69,7 @@ public class JeroMqManager extends AbstractManager { private final ZMQ.Socket publisher; private JeroMqManager(final String name, final JeroMqConfiguration config) { - super(name); + super(null, name); publisher = CONTEXT.socket(ZMQ.PUB); publisher.setAffinity(config.affinity); publisher.setBacklog(config.backlog); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java index d535e02..f222b59 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java @@ -44,7 +44,7 @@ public class KafkaManager extends AbstractManager { private final String topic; public KafkaManager(final String name, final String topic, final Property[] properties) { - super(name); + super(null, name); this.topic = topic; config.setProperty("key.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer"); config.setProperty("value.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer"); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java index 3c6739f..b741b4e 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java @@ -17,7 +17,6 @@ package org.apache.logging.log4j.core.appender.rolling; import java.io.File; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -28,11 +27,13 @@ import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; import org.apache.logging.log4j.core.Layout; import org.apache.logging.log4j.core.LogEvent; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.ConfigurationFactoryData; import org.apache.logging.log4j.core.appender.FileManager; import org.apache.logging.log4j.core.appender.ManagerFactory; import org.apache.logging.log4j.core.appender.rolling.action.AbstractAction; import org.apache.logging.log4j.core.appender.rolling.action.Action; -import org.apache.logging.log4j.core.util.Clock; +import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.util.Constants; import org.apache.logging.log4j.core.util.Log4jThread; @@ -81,15 +82,13 @@ public class RollingFileManager extends FileManager { } /** - * @throws IOException * @since 2.7 */ - protected RollingFileManager(final String fileName, final String pattern, final OutputStream os, final boolean append, - final boolean createOnDemand, final long size, final long time, final TriggeringPolicy triggeringPolicy, - final RolloverStrategy rolloverStrategy, final String advertiseURI, - final Layout<? extends Serializable> layout, final boolean writeHeader, final ByteBuffer buffer) - throws IOException { - super(fileName, os, append, false, createOnDemand, advertiseURI, layout, writeHeader, buffer); + protected RollingFileManager(LoggerContext loggerContext, final String fileName, final String pattern, final OutputStream os, + final boolean append, final boolean createOnDemand, final long size, final long time, + final TriggeringPolicy triggeringPolicy, final RolloverStrategy rolloverStrategy, + final String advertiseURI, final Layout<? extends Serializable> layout, final boolean writeHeader, final ByteBuffer buffer) { + super(loggerContext, fileName, os, append, false, createOnDemand, advertiseURI, layout, writeHeader, buffer); this.size = size; this.initialTime = time; this.triggeringPolicy = triggeringPolicy; @@ -115,15 +114,16 @@ public class RollingFileManager extends FileManager { * @param bufferSize buffer size to use if bufferedIO is true * @param immediateFlush flush on every write or not * @param createOnDemand true if you want to lazy-create the file (a.k.a. on-demand.) + * @param configuration The configuration. * @return A RollingFileManager. */ public static RollingFileManager getFileManager(final String fileName, final String pattern, final boolean append, final boolean bufferedIO, final TriggeringPolicy policy, final RolloverStrategy strategy, final String advertiseURI, final Layout<? extends Serializable> layout, final int bufferSize, - final boolean immediateFlush, final boolean createOnDemand) { + final boolean immediateFlush, final boolean createOnDemand, final Configuration configuration) { return (RollingFileManager) getManager(fileName, new FactoryData(pattern, append, - bufferedIO, policy, strategy, advertiseURI, layout, bufferSize, immediateFlush, createOnDemand), factory); + bufferedIO, policy, strategy, advertiseURI, layout, bufferSize, immediateFlush, createOnDemand, configuration), factory); } // override to make visible for unit tests @@ -341,7 +341,7 @@ public class RollingFileManager extends FileManager { /** * Factory data. */ - private static class FactoryData { + private static class FactoryData extends ConfigurationFactoryData { private final String pattern; private final boolean append; private final boolean bufferedIO; @@ -354,7 +354,7 @@ public class RollingFileManager extends FileManager { private final Layout<? extends Serializable> layout; /** - * Create the data for the factory. + * Creates the data for the factory. * @param pattern The pattern. * @param append The append flag. * @param bufferedIO The bufferedIO flag. @@ -363,11 +363,13 @@ public class RollingFileManager extends FileManager { * @param bufferSize the buffer size * @param immediateFlush flush on every write or not * @param createOnDemand true if you want to lazy-create the file (a.k.a. on-demand.) + * @param configuration The configuration */ public FactoryData(final String pattern, final boolean append, final boolean bufferedIO, final TriggeringPolicy policy, final RolloverStrategy strategy, final String advertiseURI, final Layout<? extends Serializable> layout, final int bufferSize, final boolean immediateFlush, - final boolean createOnDemand) { + final boolean createOnDemand, final Configuration configuration) { + super(configuration); this.pattern = pattern; this.append = append; this.bufferedIO = bufferedIO; @@ -458,8 +460,9 @@ public class RollingFileManager extends FileManager { final OutputStream os = data.createOnDemand ? null : new FileOutputStream(name, data.append); final long time = data.createOnDemand? System.currentTimeMillis() : file.lastModified(); // LOG4J2-531 create file first so time has valid value - return new RollingFileManager(name, data.pattern, os, data.append, data.createOnDemand, size, time, data.policy, - data.strategy, data.advertiseURI, data.layout, writeHeader, buffer); + return new RollingFileManager(data.getLoggerContext(), name, data.pattern, os, + data.append, data.createOnDemand, size, time, data.policy, data.strategy, data.advertiseURI, + data.layout, writeHeader, buffer); } catch (final IOException ex) { LOGGER.error("RollingFileManager (" + name + ") " + ex, ex); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java index 4a92beb..8b39209 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java @@ -24,8 +24,11 @@ import java.io.Serializable; import java.nio.ByteBuffer; import org.apache.logging.log4j.core.Layout; +import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.appender.AppenderLoggingException; +import org.apache.logging.log4j.core.appender.ConfigurationFactoryData; import org.apache.logging.log4j.core.appender.ManagerFactory; +import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.util.NullOutputStream; /** @@ -43,12 +46,13 @@ public class RollingRandomAccessFileManager extends RollingFileManager { private RandomAccessFile randomAccessFile; private final ThreadLocal<Boolean> isEndOfBatch = new ThreadLocal<>(); - public RollingRandomAccessFileManager(final RandomAccessFile raf, final String fileName, final String pattern, - final OutputStream os, final boolean append, final boolean immediateFlush, final int bufferSize, - final long size, final long time, final TriggeringPolicy policy, final RolloverStrategy strategy, - final String advertiseURI, final Layout<? extends Serializable> layout, final boolean writeHeader) { - super(fileName, pattern, os, append, size, time, policy, strategy, advertiseURI, layout, writeHeader, - ByteBuffer.wrap(new byte[bufferSize])); + public RollingRandomAccessFileManager(final LoggerContext loggerContext, final RandomAccessFile raf, + final String fileName, final String pattern, final OutputStream os, final boolean append, + final boolean immediateFlush, final int bufferSize, final long size, final long time, + final TriggeringPolicy policy, final RolloverStrategy strategy, final String advertiseURI, + final Layout<? extends Serializable> layout, final boolean writeHeader) { + super(loggerContext, fileName, pattern, os, append, false, size, time, policy, strategy, advertiseURI, layout, + writeHeader, ByteBuffer.wrap(new byte[bufferSize])); this.randomAccessFile = raf; isEndOfBatch.set(Boolean.FALSE); writeHeader(); @@ -78,9 +82,9 @@ public class RollingRandomAccessFileManager extends RollingFileManager { public static RollingRandomAccessFileManager getRollingRandomAccessFileManager(final String fileName, final String filePattern, final boolean isAppend, final boolean immediateFlush, final int bufferSize, final TriggeringPolicy policy, final RolloverStrategy strategy, final String advertiseURI, - final Layout<? extends Serializable> layout) { + final Layout<? extends Serializable> layout, Configuration configuration) { return (RollingRandomAccessFileManager) getManager(fileName, new FactoryData(filePattern, isAppend, - immediateFlush, bufferSize, policy, strategy, advertiseURI, layout), FACTORY); + immediateFlush, bufferSize, policy, strategy, advertiseURI, layout, configuration), FACTORY); } public Boolean isEndOfBatch() { @@ -182,9 +186,9 @@ public class RollingRandomAccessFileManager extends RollingFileManager { LOGGER.trace("RandomAccessFile {} set length to 0", name); raf.setLength(0); } - return new RollingRandomAccessFileManager(raf, name, data.pattern, NullOutputStream.NULL_OUTPUT_STREAM, - data.append, data.immediateFlush, data.bufferSize, size, time, data.policy, data.strategy, - data.advertiseURI, data.layout, writeHeader); + return new RollingRandomAccessFileManager(data.getLoggerContext(), raf, name, data.pattern, + NullOutputStream.NULL_OUTPUT_STREAM, data.append, data.immediateFlush, data.bufferSize, size, time, data.policy, + data.strategy, data.advertiseURI, data.layout, writeHeader); } catch (final IOException ex) { LOGGER.error("Cannot access RandomAccessFile " + ex, ex); if (raf != null) { @@ -202,7 +206,7 @@ public class RollingRandomAccessFileManager extends RollingFileManager { /** * Factory data. */ - private static class FactoryData { + private static class FactoryData extends ConfigurationFactoryData { private final String pattern; private final boolean append; private final boolean immediateFlush; @@ -223,10 +227,12 @@ public class RollingRandomAccessFileManager extends RollingFileManager { * @param strategy * @param advertiseURI * @param layout + * @param configuration */ public FactoryData(final String pattern, final boolean append, final boolean immediateFlush, final int bufferSize, final TriggeringPolicy policy, final RolloverStrategy strategy, - final String advertiseURI, final Layout<? extends Serializable> layout) { + final String advertiseURI, final Layout<? extends Serializable> layout, Configuration configuration) { + super(configuration); this.pattern = pattern; this.append = append; this.immediateFlush = immediateFlush; http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java index 31009b6..c413373 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java @@ -39,7 +39,7 @@ public class JndiManager extends AbstractManager { private final Context context; private JndiManager(final String name, final Context context) { - super(name); + super(null, name); this.context = context; } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java index 5367fa3..5494911 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java @@ -77,7 +77,7 @@ public class SmtpManager extends AbstractManager { protected SmtpManager(final String name, final Session session, final MimeMessage message, final FactoryData data) { - super(name); + super(null, name); this.session = session; this.message = message; this.data = data; http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java index ac95668..fb84266 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java @@ -47,8 +47,8 @@ public class RandomAccessFileManagerTest { final File file = folder.newFile(); try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) { final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM; - final RandomAccessFileManager manager = new RandomAccessFileManager(raf, file.getName(), os, - RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null, true); + final RandomAccessFileManager manager = new RandomAccessFileManager(null, raf, file.getName(), + os, RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null, true); final int size = RandomAccessFileManager.DEFAULT_BUFFER_SIZE * 3; final byte[] data = new byte[size]; @@ -68,8 +68,8 @@ public class RandomAccessFileManagerTest { final File file = folder.newFile(); try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) { final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM; - final RandomAccessFileManager manager = new RandomAccessFileManager(raf, file.getName(), os, - RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null, true); + final RandomAccessFileManager manager = new RandomAccessFileManager(null, raf, file.getName(), + os, RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null, true); final int size = RandomAccessFileManager.DEFAULT_BUFFER_SIZE * 3 + 1; final byte[] data = new byte[size]; @@ -89,8 +89,8 @@ public class RandomAccessFileManagerTest { final int bufferSize = 4 * 1024; assertNotEquals(bufferSize, RandomAccessFileManager.DEFAULT_BUFFER_SIZE); - final RandomAccessFileManager manager = new RandomAccessFileManager(raf, file.getName(), os, - bufferSize, null, null, true); + final RandomAccessFileManager manager = new RandomAccessFileManager(null, raf, file.getName(), + os, bufferSize, null, null, true); // check the resulting buffer size is what was requested assertEquals(bufferSize, manager.getBufferSize()); @@ -102,8 +102,8 @@ public class RandomAccessFileManagerTest { try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) { final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM; final int bufferSize = 1; - final RandomAccessFileManager manager = new RandomAccessFileManager(raf, file.getName(), os, - bufferSize, null, null, true); + final RandomAccessFileManager manager = new RandomAccessFileManager(null, raf, file.getName(), + os, bufferSize, null, null, true); final int size = bufferSize * 3 + 1; final byte[] data = new byte[size]; @@ -131,7 +131,7 @@ public class RandomAccessFileManagerTest { assertEquals("all flushed to disk", bytes.length, file.length()); final RandomAccessFileManager manager = RandomAccessFileManager.getFileManager( - file.getAbsolutePath(), isAppend, true, RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null); + file.getAbsolutePath(), isAppend, true, RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null, null); manager.write(bytes, 0, bytes.length, true); final int expected = bytes.length * 2; assertEquals("appended, not overwritten", expected, file.length()); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java index 27f8e7e..4ab6b5b 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java @@ -78,7 +78,7 @@ public class OnStartupTriggeringPolicyTest { configuration); final OnStartupTriggeringPolicy policy = OnStartupTriggeringPolicy.createPolicy(1); final RollingFileManager manager = RollingFileManager.getFileManager(TARGET_FILE, TARGET_PATTERN, true, false, - policy, strategy, null, layout, 8192, true, false); + policy, strategy, null, layout, 8192, true, false, configuration); try { manager.initialize(); String files = Arrays.toString(new File(TARGET_FOLDER).listFiles()); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java index 70f5aa1..c9486f0 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java @@ -58,9 +58,9 @@ public class RollingRandomAccessFileManagerTest { final long time = System.currentTimeMillis(); final TriggeringPolicy triggerPolicy = new SizeBasedTriggeringPolicy(triggerSize); final RolloverStrategy rolloverStrategy = null; - final RollingRandomAccessFileManager manager = new RollingRandomAccessFileManager(raf, file.getName(), - Strings.EMPTY, os, append, flushNow, RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE, - triggerSize, time, triggerPolicy, rolloverStrategy, null, null, true); + final RollingRandomAccessFileManager manager = new RollingRandomAccessFileManager(null, raf, + file.getName(), Strings.EMPTY, os, append, flushNow, + RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE, triggerSize, time, triggerPolicy, rolloverStrategy, null, null, true); final int size = RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE * 3; final byte[] data = new byte[size]; @@ -87,9 +87,9 @@ public class RollingRandomAccessFileManagerTest { final long time = System.currentTimeMillis(); final TriggeringPolicy triggerPolicy = new SizeBasedTriggeringPolicy(triggerSize); final RolloverStrategy rolloverStrategy = null; - final RollingRandomAccessFileManager manager = new RollingRandomAccessFileManager(raf, file.getName(), - Strings.EMPTY, os, append, flushNow, RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE, - triggerSize, time, triggerPolicy, rolloverStrategy, null, null, true); + final RollingRandomAccessFileManager manager = new RollingRandomAccessFileManager(null, raf, + file.getName(), Strings.EMPTY, os, append, flushNow, + RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE, triggerSize, time, triggerPolicy, rolloverStrategy, null, null, true); final int size = RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE * 3 + 1; final byte[] data = new byte[size]; @@ -115,9 +115,9 @@ public class RollingRandomAccessFileManagerTest { final int bufferSize = 4 * 1024; assertNotEquals(bufferSize, RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE); final RolloverStrategy rolloverStrategy = null; - final RollingRandomAccessFileManager manager = new RollingRandomAccessFileManager(raf, file.getName(), - Strings.EMPTY, os, append, flushNow, bufferSize, triggerSize, time, triggerPolicy, rolloverStrategy, - null, null, true); + final RollingRandomAccessFileManager manager = new RollingRandomAccessFileManager(null, raf, + file.getName(), Strings.EMPTY, os, append, flushNow, bufferSize, triggerSize, time, triggerPolicy, + rolloverStrategy, null, null, true); // check the resulting buffer size is what was requested assertEquals(bufferSize, manager.getBufferSize()); @@ -149,7 +149,7 @@ public class RollingRandomAccessFileManagerTest { // file.getAbsolutePath(), Strings.EMPTY, isAppend, immediateFlush, RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE, new SizeBasedTriggeringPolicy(Long.MAX_VALUE), // - null, null, null); + null, null, null, null); manager.write(bytes, 0, bytes.length, immediateFlush); final int expected = bytes.length * 2; assertThat("appended, not overwritten", file, hasLength(expected)); @@ -171,7 +171,7 @@ public class RollingRandomAccessFileManagerTest { // file.getAbsolutePath(), Strings.EMPTY, isAppend, true, RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE, new SizeBasedTriggeringPolicy(Long.MAX_VALUE), // - null, null, null); + null, null, null, null); assertTrue(manager.getFileTime() < expectedMax); assertTrue(manager.getFileTime() >= expectedMin); } @@ -189,7 +189,7 @@ public class RollingRandomAccessFileManagerTest { // file.getAbsolutePath(), Strings.EMPTY, isAppend, true, RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE, new SizeBasedTriggeringPolicy(Long.MAX_VALUE), // - null, null, null); + null, null, null, null); assertThat(file, lastModified(equalTo(manager.getFileTime()))); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/AbstractFlumeManager.java ---------------------------------------------------------------------- diff --git a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/AbstractFlumeManager.java b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/AbstractFlumeManager.java index 55fb858..8fc6ab4 100644 --- a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/AbstractFlumeManager.java +++ b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/AbstractFlumeManager.java @@ -25,7 +25,7 @@ import org.apache.logging.log4j.core.appender.AbstractManager; public abstract class AbstractFlumeManager extends AbstractManager { public AbstractFlumeManager(final String name) { - super(name); + super(null, name); } public abstract void send(Event event); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/72259095/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 4c8303a..b170dc6 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -129,6 +129,9 @@ <action issue="LOG4J2-1547" dev="ggregory" type="add" due-to="Gary Gregory"> The Core AbstractConfiguration should track its LoggerContext and add Configuration.getLoggerContext(). </action> + <action issue="LOG4J2-1540" dev="ggregory" type="add" due-to="Gary Gregory"> + The Core AbstractManager should track its LoggerContext. + </action> <action issue="LOG4J2-1458" dev="ggregory" type="update" due-to="Gary Gregory"> Update Jackson from 2.7.5 to 2.8.0. </action>