Repository: logging-log4j2 Updated Branches: refs/heads/master 89b229755 -> fe4296a4c
Refactor duplicate await shutdown code Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/5bc69e29 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/5bc69e29 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/5bc69e29 Branch: refs/heads/master Commit: 5bc69e295bca1714c2c2eca1a848ca3469a3aed8 Parents: 89b2297 Author: Matt Sicker <[email protected]> Authored: Tue Jan 3 21:39:08 2017 -0600 Committer: Matt Sicker <[email protected]> Committed: Tue Jan 3 21:39:08 2017 -0600 ---------------------------------------------------------------------- .../core/net/server/AbstractSocketServer.java | 28 ++++++++++++++++---- .../log4j/core/net/server/TcpSocketServer.java | 24 ++++------------- .../log4j/core/net/server/UdpSocketServer.java | 18 +++---------- 3 files changed, 31 insertions(+), 39 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5bc69e29/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java index 80ba6f0..9836694 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java @@ -16,13 +16,14 @@ */ package org.apache.logging.log4j.core.net.server; +import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.net.InetAddress; -import java.net.MalformedURLException; import java.net.URI; import java.net.URL; import java.util.Objects; @@ -44,10 +45,10 @@ import org.apache.logging.log4j.util.Strings; /** * Abstract socket server for TCP and UDP implementations. - * + * * @param <T> * The kind of input stream read - * + * * TODO Make a LifeCycle */ public abstract class AbstractSocketServer<T extends InputStream> extends LogEventListener implements Runnable { @@ -158,7 +159,7 @@ public abstract class AbstractSocketServer<T extends InputStream> extends LogEve /** * Creates a new socket server. - * + * * @param port * listen to this port * @param logEventInput @@ -179,7 +180,7 @@ public abstract class AbstractSocketServer<T extends InputStream> extends LogEve /** * Start this server in a new thread. - * + * * @return the new thread that running this server. */ public Thread startNewThread() { @@ -188,4 +189,21 @@ public abstract class AbstractSocketServer<T extends InputStream> extends LogEve return thread; } + public abstract void shutdown() throws Exception; + + public void awaitTermination(final Thread serverThread) throws Exception { + final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + while (true) { + final String line = reader.readLine(); + if (line == null + || line.equalsIgnoreCase("quit") + || line.equalsIgnoreCase("stop") + || line.equalsIgnoreCase("exit")) { + this.shutdown(); + serverThread.join(); + break; + } + } + } + } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5bc69e29/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java index 636e6f4..e86b382 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java @@ -16,29 +16,25 @@ */ package org.apache.logging.log4j.core.net.server; -import java.io.BufferedReader; import java.io.EOFException; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.io.OptionalDataException; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; -import java.nio.charset.Charset; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import com.beust.jcommander.Parameter; +import com.beust.jcommander.validators.PositiveInteger; import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.util.BasicCommandLineArguments; import org.apache.logging.log4j.core.util.Log4jThread; import org.apache.logging.log4j.message.EntryMessage; -import com.beust.jcommander.Parameter; -import com.beust.jcommander.validators.PositiveInteger; - /** * Listens for Log4j events on a TCP server socket and passes them on to Log4j. * @@ -194,20 +190,9 @@ public class TcpSocketServer<T extends InputStream> extends AbstractSocketServer } final TcpSocketServer<ObjectInputStream> socketServer = TcpSocketServer .createSerializedSocketServer(cla.getPort(), cla.getBacklog(), cla.getLocalBindAddress()); - final Thread serverThread = new Log4jThread(socketServer); - serverThread.start(); + final Thread serverThread = socketServer.startNewThread(); if (cla.isInteractive()) { - final Charset enc = Charset.defaultCharset(); - final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, enc)); - while (true) { - final String line = reader.readLine(); - if (line == null || line.equalsIgnoreCase("Quit") || line.equalsIgnoreCase("Stop") - || line.equalsIgnoreCase("Exit")) { - socketServer.shutdown(); - serverThread.join(); - break; - } - } + socketServer.awaitTermination(serverThread); } } @@ -321,6 +306,7 @@ public class TcpSocketServer<T extends InputStream> extends AbstractSocketServer * * @throws IOException if the server socket could not be closed */ + @Override public void shutdown() throws IOException { final EntryMessage entry = logger.traceEntry(); setActive(false); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5bc69e29/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java index 427a365..ed04f69 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java @@ -16,12 +16,10 @@ */ package org.apache.logging.log4j.core.net.server; -import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.EOFException; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.io.OptionalDataException; import java.net.DatagramPacket; @@ -29,7 +27,6 @@ import java.net.DatagramSocket; import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.util.BasicCommandLineArguments; -import org.apache.logging.log4j.core.util.Log4jThread; /** * Listens for Log4j events on a datagram socket and passes them on to Log4j. @@ -97,19 +94,9 @@ public class UdpSocketServer<T extends InputStream> extends AbstractSocketServer } final UdpSocketServer<ObjectInputStream> socketServer = UdpSocketServer .createSerializedSocketServer(cla.getPort()); - final Thread serverThread = new Log4jThread(socketServer); - serverThread.start(); + final Thread serverThread = socketServer.startNewThread(); if (cla.isInteractive()) { - final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - while (true) { - final String line = reader.readLine(); - if (line == null || line.equalsIgnoreCase("Quit") || line.equalsIgnoreCase("Stop") - || line.equalsIgnoreCase("Exit")) { - socketServer.shutdown(); - serverThread.join(); - break; - } - } + socketServer.awaitTermination(serverThread); } } @@ -173,6 +160,7 @@ public class UdpSocketServer<T extends InputStream> extends AbstractSocketServer /** * Shutdown the server. */ + @Override public void shutdown() { this.setActive(false); Thread.currentThread().interrupt();
