Hey, I just noticed this, but can we remove the dependency on com.beust.jcommander for TcpSocketServer? This is a standalone app and it would be nice for users if it could be run with just the core and api jars.
Sent from my iPhone > On Jan 4, 2017, at 12:52, mattsic...@apache.org wrote: > > 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 <matt.sic...@spr.com> > Authored: Tue Jan 3 21:39:08 2017 -0600 > Committer: Matt Sicker <matt.sic...@spr.com> > 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(); > --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org