I'm tempted to write some Spring Boot standalone server examples since
they're super easy to work with. Would that make sense to go in
logging-log4j-tools?

On 7 January 2017 at 14:51, Mikael Ståldal <mikael.stal...@magine.com>
wrote:

> I think that all those standalone servers in log4j-core should be moved to
> one or more new modules (see LOG4J-1650).
>
> On Jan 4, 2017 7:43 PM, "Gary Gregory" <garydgreg...@gmail.com> wrote:
>
>> This is an OK dependency IMO, it provides great bang for the buck. (I
>> would say that of course since I added the dep)
>>
>> Gary
>>
>> On Wed, Jan 4, 2017 at 7:30 AM, Matt Sicker <boa...@gmail.com> wrote:
>>
>>> I think that's from LOG4J2-1604.
>>>
>>> On 4 January 2017 at 07:48, Remko Popma <remko.po...@gmail.com> wrote:
>>>
>>>> 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/5
>>>> bc69e29
>>>> > Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/5
>>>> bc69e29
>>>> >
>>>> > 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/5
>>>> bc69e29/log4j-core/src/main/java/org/apache/logging/log4j/co
>>>> re/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/5
>>>> bc69e29/log4j-core/src/main/java/org/apache/logging/log4j/co
>>>> re/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/5
>>>> bc69e29/log4j-core/src/main/java/org/apache/logging/log4j/co
>>>> re/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
>>>>
>>>>
>>>
>>>
>>> --
>>> Matt Sicker <boa...@gmail.com>
>>>
>>
>>
>>
>> --
>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>> Java Persistence with Hibernate, Second Edition
>> <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8>
>>
>> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459>
>> JUnit in Action, Second Edition
>> <https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22>
>>
>> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021>
>> Spring Batch in Action
>> <https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action>
>> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951>
>> Blog: http://garygregory.wordpress.com
>> Home: http://garygregory.com/
>> Tweet! http://twitter.com/GaryGregory
>>
>


-- 
Matt Sicker <boa...@gmail.com>

Reply via email to