You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/09/08 14:53:08 UTC
[08/35] logging-log4j2 git commit: Deprecate
org.apache.logging.log4j.core.util.NullOutputStream.NULL_OUTPUT_STREAM in
favor of org.apache.logging.log4j.core.util.NullOutputStream.getInstance().
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f73f89b1/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
index 855b99a..444c250 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
@@ -1,327 +1,327 @@
-/*
- * 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.net;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.net.ConnectException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.CountDownLatch;
-
-import org.apache.logging.log4j.core.Layout;
-import org.apache.logging.log4j.core.appender.AppenderLoggingException;
-import org.apache.logging.log4j.core.appender.ManagerFactory;
-import org.apache.logging.log4j.core.appender.OutputStreamManager;
-import org.apache.logging.log4j.core.util.Log4jThread;
-import org.apache.logging.log4j.core.util.NullOutputStream;
-import org.apache.logging.log4j.util.Strings;
-
-/**
- * Manager of TCP Socket connections.
- */
-public class TcpSocketManager extends AbstractSocketManager {
- /**
- The default reconnection delay (30000 milliseconds or 30 seconds).
- */
- public static final int DEFAULT_RECONNECTION_DELAY_MILLIS = 30000;
- /**
- The default port number of remote logging server (4560).
- */
- private static final int DEFAULT_PORT = 4560;
-
- private static final TcpSocketManagerFactory FACTORY = new TcpSocketManagerFactory();
-
- private final int reconnectionDelay;
-
- private Reconnector reconnector;
-
- private Socket socket;
-
- private final boolean retry;
-
- private final boolean immediateFail;
-
- private final int connectTimeoutMillis;
-
- /**
- * The Constructor.
- * @param name The unique name of this connection.
- * @param os The OutputStream.
- * @param socket The Socket.
- * @param inetAddress The Internet address of the host.
- * @param host The name of the host.
- * @param port The port number on the host.
- * @param connectTimeoutMillis the connect timeout in milliseconds.
- * @param delay Reconnection interval.
- * @param immediateFail True if the write should fail if no socket is immediately available.
- * @param layout The Layout.
- * @param bufferSize The buffer size.
- */
- public TcpSocketManager(final String name, final OutputStream os, final Socket socket, final InetAddress inetAddress,
- final String host, final int port, final int connectTimeoutMillis, final int delay,
- final boolean immediateFail, final Layout<? extends Serializable> layout, final int bufferSize) {
- super(name, os, inetAddress, host, port, layout, true, bufferSize);
- this.connectTimeoutMillis = connectTimeoutMillis;
- this.reconnectionDelay = delay;
- this.socket = socket;
- this.immediateFail = immediateFail;
- retry = delay > 0;
- if (socket == null) {
- reconnector = createReconnector();
- reconnector.start();
- }
- }
-
- /**
- * Obtain a TcpSocketManager.
- * @param host The host to connect to.
- * @param port The port on the host.
- * @param connectTimeoutMillis the connect timeout in milliseconds
- * @param reconnectDelayMillis The interval to pause between retries.
- * @param bufferSize The buffer size.
- * @return A TcpSocketManager.
- */
- public static TcpSocketManager getSocketManager(final String host, int port, final int connectTimeoutMillis,
- int reconnectDelayMillis, final boolean immediateFail, final Layout<? extends Serializable> layout, final int bufferSize) {
- if (Strings.isEmpty(host)) {
- throw new IllegalArgumentException("A host name is required");
- }
- if (port <= 0) {
- port = DEFAULT_PORT;
- }
- if (reconnectDelayMillis == 0) {
- reconnectDelayMillis = DEFAULT_RECONNECTION_DELAY_MILLIS;
- }
- return (TcpSocketManager) getManager("TCP:" + host + ':' + port, new FactoryData(
- host, port, connectTimeoutMillis, reconnectDelayMillis, immediateFail, layout, bufferSize), FACTORY);
- }
-
- @Override
- protected void write(final byte[] bytes, final int offset, final int length, final boolean immediateFlush) {
- if (socket == null) {
- if (reconnector != null && !immediateFail) {
- reconnector.latch();
- }
- if (socket == null) {
- final String msg = "Error writing to " + getName() + " socket not available";
- throw new AppenderLoggingException(msg);
- }
- }
- synchronized (this) {
- try {
- final OutputStream outputStream = getOutputStream();
- outputStream.write(bytes, offset, length);
- if (immediateFlush) {
- outputStream.flush();
- }
- } catch (final IOException ex) {
- if (retry && reconnector == null) {
- reconnector = createReconnector();
- reconnector.start();
- }
- final String msg = "Error writing to " + getName();
- throw new AppenderLoggingException(msg, ex);
- }
- }
- }
-
- @Override
- protected synchronized boolean closeOutputStream() {
- boolean closed = super.closeOutputStream();
- if (reconnector != null) {
- reconnector.shutdown();
- reconnector.interrupt();
- reconnector = null;
- }
- final Socket oldSocket = socket;
- socket = null;
- if (oldSocket != null) {
- try {
- oldSocket.close();
- } catch (final IOException e) {
- LOGGER.error("Could not close socket {}", socket);
- return false;
- }
- }
- return closed;
- }
-
- public int getConnectTimeoutMillis() {
- return connectTimeoutMillis;
- }
-
- /**
- * Gets this TcpSocketManager's content format. Specified by:
- * <ul>
- * <li>Key: "protocol" Value: "tcp"</li>
- * <li>Key: "direction" Value: "out"</li>
- * </ul>
- *
- * @return Map of content format keys supporting TcpSocketManager
- */
- @Override
- public Map<String, String> getContentFormat() {
- final Map<String, String> result = new HashMap<>(super.getContentFormat());
- result.put("protocol", "tcp");
- result.put("direction", "out");
- return result;
- }
-
- /**
- * Handles reconnecting to a Thread.
- */
- private class Reconnector extends Log4jThread {
-
- private final CountDownLatch latch = new CountDownLatch(1);
-
- private boolean shutdown = false;
-
- private final Object owner;
-
- public Reconnector(final OutputStreamManager owner) {
- super("TcpSocketManager-Reconnector");
- this.owner = owner;
- }
-
- public void latch() {
- try {
- latch.await();
- } catch (final InterruptedException ex) {
- // Ignore the exception.
- }
- }
-
- public void shutdown() {
- shutdown = true;
- }
-
- @Override
- public void run() {
- while (!shutdown) {
- try {
- sleep(reconnectionDelay);
- final Socket sock = createSocket(inetAddress, port);
- final OutputStream newOS = sock.getOutputStream();
- synchronized (owner) {
- try {
- getOutputStream().close();
- } catch (final IOException ioe) {
- // Ignore this.
- }
-
- setOutputStream(newOS);
- socket = sock;
- reconnector = null;
- shutdown = true;
- }
- LOGGER.debug("Connection to " + host + ':' + port + " reestablished.");
- } catch (final InterruptedException ie) {
- LOGGER.debug("Reconnection interrupted.");
- } catch (final ConnectException ex) {
- LOGGER.debug(host + ':' + port + " refused connection");
- } catch (final IOException ioe) {
- LOGGER.debug("Unable to reconnect to " + host + ':' + port);
- } finally {
- latch.countDown();
- }
- }
- }
- }
-
- private Reconnector createReconnector() {
- final Reconnector recon = new Reconnector(this);
- recon.setDaemon(true);
- recon.setPriority(Thread.MIN_PRIORITY);
- return recon;
- }
-
- protected Socket createSocket(final InetAddress host, final int port) throws IOException {
- return createSocket(host.getHostName(), port);
- }
-
- protected Socket createSocket(final String host, final int port) throws IOException {
- final InetSocketAddress address = new InetSocketAddress(host, port);
- final Socket newSocket = new Socket();
- newSocket.connect(address, connectTimeoutMillis);
- return newSocket;
- }
-
- /**
- * Data for the factory.
- */
- private static class FactoryData {
- private final String host;
- private final int port;
- private final int connectTimeoutMillis;
- private final int reconnectDelayMillis;
- private final boolean immediateFail;
- private final Layout<? extends Serializable> layout;
- private final int bufferSize;
-
- public FactoryData(final String host, final int port, final int connectTimeoutMillis, final int reconnectDelayMillis,
- final boolean immediateFail, final Layout<? extends Serializable> layout, final int bufferSize) {
- this.host = host;
- this.port = port;
- this.connectTimeoutMillis = connectTimeoutMillis;
- this.reconnectDelayMillis = reconnectDelayMillis;
- this.immediateFail = immediateFail;
- this.layout = layout;
- this.bufferSize = bufferSize;
- }
- }
-
- /**
- * Factory to create a TcpSocketManager.
- */
- protected static class TcpSocketManagerFactory implements ManagerFactory<TcpSocketManager, FactoryData> {
- @Override
- public TcpSocketManager createManager(final String name, final FactoryData data) {
-
- InetAddress inetAddress;
- OutputStream os;
- try {
- inetAddress = InetAddress.getByName(data.host);
- } catch (final UnknownHostException ex) {
- LOGGER.error("Could not find address of " + data.host, ex, ex);
- return null;
- }
- try {
- // LOG4J2-1042
- final Socket socket = new Socket();
- socket.connect(new InetSocketAddress(data.host, data.port), data.connectTimeoutMillis);
- os = socket.getOutputStream();
- return new TcpSocketManager(name, os, socket, inetAddress, data.host, data.port,
- data.connectTimeoutMillis, data.reconnectDelayMillis, data.immediateFail, data.layout, data.bufferSize);
- } catch (final IOException ex) {
- LOGGER.error("TcpSocketManager (" + name + ") " + ex, ex);
- os = NullOutputStream.NULL_OUTPUT_STREAM;
- }
- if (data.reconnectDelayMillis == 0) {
- return null;
- }
- return new TcpSocketManager(name, os, null, inetAddress, data.host, data.port, data.connectTimeoutMillis,
- data.reconnectDelayMillis, data.immediateFail, data.layout, data.bufferSize);
- }
- }
-
-}
+/*
+ * 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.net;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Serializable;
+import java.net.ConnectException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.CountDownLatch;
+
+import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.core.appender.AppenderLoggingException;
+import org.apache.logging.log4j.core.appender.ManagerFactory;
+import org.apache.logging.log4j.core.appender.OutputStreamManager;
+import org.apache.logging.log4j.core.util.Log4jThread;
+import org.apache.logging.log4j.core.util.NullOutputStream;
+import org.apache.logging.log4j.util.Strings;
+
+/**
+ * Manager of TCP Socket connections.
+ */
+public class TcpSocketManager extends AbstractSocketManager {
+ /**
+ The default reconnection delay (30000 milliseconds or 30 seconds).
+ */
+ public static final int DEFAULT_RECONNECTION_DELAY_MILLIS = 30000;
+ /**
+ The default port number of remote logging server (4560).
+ */
+ private static final int DEFAULT_PORT = 4560;
+
+ private static final TcpSocketManagerFactory FACTORY = new TcpSocketManagerFactory();
+
+ private final int reconnectionDelay;
+
+ private Reconnector reconnector;
+
+ private Socket socket;
+
+ private final boolean retry;
+
+ private final boolean immediateFail;
+
+ private final int connectTimeoutMillis;
+
+ /**
+ * The Constructor.
+ * @param name The unique name of this connection.
+ * @param os The OutputStream.
+ * @param socket The Socket.
+ * @param inetAddress The Internet address of the host.
+ * @param host The name of the host.
+ * @param port The port number on the host.
+ * @param connectTimeoutMillis the connect timeout in milliseconds.
+ * @param delay Reconnection interval.
+ * @param immediateFail True if the write should fail if no socket is immediately available.
+ * @param layout The Layout.
+ * @param bufferSize The buffer size.
+ */
+ public TcpSocketManager(final String name, final OutputStream os, final Socket socket, final InetAddress inetAddress,
+ final String host, final int port, final int connectTimeoutMillis, final int delay,
+ final boolean immediateFail, final Layout<? extends Serializable> layout, final int bufferSize) {
+ super(name, os, inetAddress, host, port, layout, true, bufferSize);
+ this.connectTimeoutMillis = connectTimeoutMillis;
+ this.reconnectionDelay = delay;
+ this.socket = socket;
+ this.immediateFail = immediateFail;
+ retry = delay > 0;
+ if (socket == null) {
+ reconnector = createReconnector();
+ reconnector.start();
+ }
+ }
+
+ /**
+ * Obtain a TcpSocketManager.
+ * @param host The host to connect to.
+ * @param port The port on the host.
+ * @param connectTimeoutMillis the connect timeout in milliseconds
+ * @param reconnectDelayMillis The interval to pause between retries.
+ * @param bufferSize The buffer size.
+ * @return A TcpSocketManager.
+ */
+ public static TcpSocketManager getSocketManager(final String host, int port, final int connectTimeoutMillis,
+ int reconnectDelayMillis, final boolean immediateFail, final Layout<? extends Serializable> layout, final int bufferSize) {
+ if (Strings.isEmpty(host)) {
+ throw new IllegalArgumentException("A host name is required");
+ }
+ if (port <= 0) {
+ port = DEFAULT_PORT;
+ }
+ if (reconnectDelayMillis == 0) {
+ reconnectDelayMillis = DEFAULT_RECONNECTION_DELAY_MILLIS;
+ }
+ return (TcpSocketManager) getManager("TCP:" + host + ':' + port, new FactoryData(
+ host, port, connectTimeoutMillis, reconnectDelayMillis, immediateFail, layout, bufferSize), FACTORY);
+ }
+
+ @Override
+ protected void write(final byte[] bytes, final int offset, final int length, final boolean immediateFlush) {
+ if (socket == null) {
+ if (reconnector != null && !immediateFail) {
+ reconnector.latch();
+ }
+ if (socket == null) {
+ final String msg = "Error writing to " + getName() + " socket not available";
+ throw new AppenderLoggingException(msg);
+ }
+ }
+ synchronized (this) {
+ try {
+ final OutputStream outputStream = getOutputStream();
+ outputStream.write(bytes, offset, length);
+ if (immediateFlush) {
+ outputStream.flush();
+ }
+ } catch (final IOException ex) {
+ if (retry && reconnector == null) {
+ reconnector = createReconnector();
+ reconnector.start();
+ }
+ final String msg = "Error writing to " + getName();
+ throw new AppenderLoggingException(msg, ex);
+ }
+ }
+ }
+
+ @Override
+ protected synchronized boolean closeOutputStream() {
+ boolean closed = super.closeOutputStream();
+ if (reconnector != null) {
+ reconnector.shutdown();
+ reconnector.interrupt();
+ reconnector = null;
+ }
+ final Socket oldSocket = socket;
+ socket = null;
+ if (oldSocket != null) {
+ try {
+ oldSocket.close();
+ } catch (final IOException e) {
+ LOGGER.error("Could not close socket {}", socket);
+ return false;
+ }
+ }
+ return closed;
+ }
+
+ public int getConnectTimeoutMillis() {
+ return connectTimeoutMillis;
+ }
+
+ /**
+ * Gets this TcpSocketManager's content format. Specified by:
+ * <ul>
+ * <li>Key: "protocol" Value: "tcp"</li>
+ * <li>Key: "direction" Value: "out"</li>
+ * </ul>
+ *
+ * @return Map of content format keys supporting TcpSocketManager
+ */
+ @Override
+ public Map<String, String> getContentFormat() {
+ final Map<String, String> result = new HashMap<>(super.getContentFormat());
+ result.put("protocol", "tcp");
+ result.put("direction", "out");
+ return result;
+ }
+
+ /**
+ * Handles reconnecting to a Thread.
+ */
+ private class Reconnector extends Log4jThread {
+
+ private final CountDownLatch latch = new CountDownLatch(1);
+
+ private boolean shutdown = false;
+
+ private final Object owner;
+
+ public Reconnector(final OutputStreamManager owner) {
+ super("TcpSocketManager-Reconnector");
+ this.owner = owner;
+ }
+
+ public void latch() {
+ try {
+ latch.await();
+ } catch (final InterruptedException ex) {
+ // Ignore the exception.
+ }
+ }
+
+ public void shutdown() {
+ shutdown = true;
+ }
+
+ @Override
+ public void run() {
+ while (!shutdown) {
+ try {
+ sleep(reconnectionDelay);
+ final Socket sock = createSocket(inetAddress, port);
+ final OutputStream newOS = sock.getOutputStream();
+ synchronized (owner) {
+ try {
+ getOutputStream().close();
+ } catch (final IOException ioe) {
+ // Ignore this.
+ }
+
+ setOutputStream(newOS);
+ socket = sock;
+ reconnector = null;
+ shutdown = true;
+ }
+ LOGGER.debug("Connection to " + host + ':' + port + " reestablished.");
+ } catch (final InterruptedException ie) {
+ LOGGER.debug("Reconnection interrupted.");
+ } catch (final ConnectException ex) {
+ LOGGER.debug(host + ':' + port + " refused connection");
+ } catch (final IOException ioe) {
+ LOGGER.debug("Unable to reconnect to " + host + ':' + port);
+ } finally {
+ latch.countDown();
+ }
+ }
+ }
+ }
+
+ private Reconnector createReconnector() {
+ final Reconnector recon = new Reconnector(this);
+ recon.setDaemon(true);
+ recon.setPriority(Thread.MIN_PRIORITY);
+ return recon;
+ }
+
+ protected Socket createSocket(final InetAddress host, final int port) throws IOException {
+ return createSocket(host.getHostName(), port);
+ }
+
+ protected Socket createSocket(final String host, final int port) throws IOException {
+ final InetSocketAddress address = new InetSocketAddress(host, port);
+ final Socket newSocket = new Socket();
+ newSocket.connect(address, connectTimeoutMillis);
+ return newSocket;
+ }
+
+ /**
+ * Data for the factory.
+ */
+ private static class FactoryData {
+ private final String host;
+ private final int port;
+ private final int connectTimeoutMillis;
+ private final int reconnectDelayMillis;
+ private final boolean immediateFail;
+ private final Layout<? extends Serializable> layout;
+ private final int bufferSize;
+
+ public FactoryData(final String host, final int port, final int connectTimeoutMillis, final int reconnectDelayMillis,
+ final boolean immediateFail, final Layout<? extends Serializable> layout, final int bufferSize) {
+ this.host = host;
+ this.port = port;
+ this.connectTimeoutMillis = connectTimeoutMillis;
+ this.reconnectDelayMillis = reconnectDelayMillis;
+ this.immediateFail = immediateFail;
+ this.layout = layout;
+ this.bufferSize = bufferSize;
+ }
+ }
+
+ /**
+ * Factory to create a TcpSocketManager.
+ */
+ protected static class TcpSocketManagerFactory implements ManagerFactory<TcpSocketManager, FactoryData> {
+ @Override
+ public TcpSocketManager createManager(final String name, final FactoryData data) {
+
+ InetAddress inetAddress;
+ OutputStream os;
+ try {
+ inetAddress = InetAddress.getByName(data.host);
+ } catch (final UnknownHostException ex) {
+ LOGGER.error("Could not find address of " + data.host, ex, ex);
+ return null;
+ }
+ try {
+ // LOG4J2-1042
+ final Socket socket = new Socket();
+ socket.connect(new InetSocketAddress(data.host, data.port), data.connectTimeoutMillis);
+ os = socket.getOutputStream();
+ return new TcpSocketManager(name, os, socket, inetAddress, data.host, data.port,
+ data.connectTimeoutMillis, data.reconnectDelayMillis, data.immediateFail, data.layout, data.bufferSize);
+ } catch (final IOException ex) {
+ LOGGER.error("TcpSocketManager (" + name + ") " + ex, ex);
+ os = NullOutputStream.getInstance();
+ }
+ if (data.reconnectDelayMillis == 0) {
+ return null;
+ }
+ return new TcpSocketManager(name, os, null, inetAddress, data.host, data.port, data.connectTimeoutMillis,
+ data.reconnectDelayMillis, data.immediateFail, data.layout, data.bufferSize);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f73f89b1/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NullOutputStream.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NullOutputStream.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NullOutputStream.java
index 9382f9d..846db3b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NullOutputStream.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NullOutputStream.java
@@ -31,11 +31,18 @@ import java.io.OutputStream;
*/
public class NullOutputStream extends OutputStream {
+ private static final NullOutputStream INSTANCE = new NullOutputStream();
+
/**
- * A singleton.
+ * @deprecated Use {@link #getInstance()}.
*/
+ @Deprecated
public static final NullOutputStream NULL_OUTPUT_STREAM = new NullOutputStream();
+ public static NullOutputStream getInstance() {
+ return INSTANCE;
+ }
+
private NullOutputStream() {
// do nothing
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f73f89b1/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 fb84266..3cbaa68 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
@@ -46,7 +46,7 @@ public class RandomAccessFileManagerTest {
public void testWrite_multiplesOfBufferSize() throws IOException {
final File file = folder.newFile();
try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
- final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM;
+ final OutputStream os = NullOutputStream.getInstance();
final RandomAccessFileManager manager = new RandomAccessFileManager(null, raf, file.getName(),
os, RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null, true);
@@ -67,7 +67,7 @@ public class RandomAccessFileManagerTest {
public void testWrite_dataExceedingBufferSize() throws IOException {
final File file = folder.newFile();
try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
- final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM;
+ final OutputStream os = NullOutputStream.getInstance();
final RandomAccessFileManager manager = new RandomAccessFileManager(null, raf, file.getName(),
os, RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null, true);
@@ -85,7 +85,7 @@ public class RandomAccessFileManagerTest {
public void testConfigurableBufferSize() throws IOException {
final File file = folder.newFile();
try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
- final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM;
+ final OutputStream os = NullOutputStream.getInstance();
final int bufferSize = 4 * 1024;
assertNotEquals(bufferSize, RandomAccessFileManager.DEFAULT_BUFFER_SIZE);
@@ -100,7 +100,7 @@ public class RandomAccessFileManagerTest {
public void testWrite_dataExceedingMinBufferSize() throws IOException {
final File file = folder.newFile();
try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
- final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM;
+ final OutputStream os = NullOutputStream.getInstance();
final int bufferSize = 1;
final RandomAccessFileManager manager = new RandomAccessFileManager(null, raf, file.getName(),
os, bufferSize, null, null, true);
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f73f89b1/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 c9486f0..eb8c095 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
@@ -51,7 +51,7 @@ public class RollingRandomAccessFileManagerTest {
final File file = File.createTempFile("log4j2", "test");
file.deleteOnExit();
try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
- final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM;
+ final OutputStream os = NullOutputStream.getInstance();
final boolean append = false;
final boolean flushNow = false;
final long triggerSize = Long.MAX_VALUE;
@@ -80,7 +80,7 @@ public class RollingRandomAccessFileManagerTest {
final File file = File.createTempFile("log4j2", "test");
file.deleteOnExit();
try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
- final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM;
+ final OutputStream os = NullOutputStream.getInstance();
final boolean append = false;
final boolean flushNow = false;
final long triggerSize = 0;
@@ -106,7 +106,7 @@ public class RollingRandomAccessFileManagerTest {
final File file = File.createTempFile("log4j2", "test");
file.deleteOnExit();
try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
- final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM;
+ final OutputStream os = NullOutputStream.getInstance();
final boolean append = false;
final boolean flushNow = false;
final long triggerSize = 0;