From be08403a647c060832561daa84514b076ef357c1 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Sun, 15 Oct 2017 20:48:08 +0200 Subject: [PATCH] log request info in a file accessible outstide the container --- war/run.sh | 21 +++++++++++---- war/server.env | 1 + war/server.xml | 2 +- war/src/main/java/pnews/servlet/Pnews.java | 2 ++ war/src/main/java/pnews/servlet/RequesterLog.java | 32 +++++++++++++++++++++++ 5 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 war/server.env create mode 100644 war/src/main/java/pnews/servlet/RequesterLog.java diff --git a/war/run.sh b/war/run.sh index 42b1466..5a272e5 100755 --- a/war/run.sh +++ b/war/run.sh @@ -2,11 +2,22 @@ SDIR=`dirname $0` SWAR=`realpath $SDIR/target/pnews-1.0.war` -TMP_DIR="/tmp/$$.tmp" -DWAR="$TMP_DIR/config/apps/pnews-1.0.war" -mkdir -p $TMP_DIR/config/apps +if [ -z "$1" ]; then + SHARED_DIR="/tmp/$$.tmp" +else + SHARED_DIR="$1" +fi + +SHARED_DIR=`realpath $SHARED_DIR` + +echo "SHARED_DIR=$SHARED_DIR" + +DWAR="$SHARED_DIR/apps/pnews-1.0.war" + +mkdir -p $SHARED_DIR/apps cp $SWAR $DWAR -cp server.xml $TMP_DIR/config +cp server.xml $SHARED_DIR +cp server.env $SHARED_DIR -docker run -ti --name pnews -p 9080:9080 -p 9443:9443 -v $TMP_DIR/config:/config websphere-liberty:webProfile7 +docker run -ti --name pnews -p 9080:9080 -p 9443:9443 -v $SHARED_DIR:/opt/ibm/wlp/usr/servers/defaultServer websphere-liberty:webProfile7 diff --git a/war/server.env b/war/server.env new file mode 100644 index 0000000..beb12a4 --- /dev/null +++ b/war/server.env @@ -0,0 +1 @@ +WLP_OUTPUT_DIR=/opt/ibm/wlp/usr/servers/defaultServer/output diff --git a/war/server.xml b/war/server.xml index e800ec1..f4acbb7 100644 --- a/war/server.xml +++ b/war/server.xml @@ -2,7 +2,7 @@ diff --git a/war/src/main/java/pnews/servlet/Pnews.java b/war/src/main/java/pnews/servlet/Pnews.java index da891d1..662b47c 100644 --- a/war/src/main/java/pnews/servlet/Pnews.java +++ b/war/src/main/java/pnews/servlet/Pnews.java @@ -117,6 +117,8 @@ public class Pnews extends HttpServlet { String path; InputStream in; + RequesterLog.singleton.writeRequest(req); + LOG.info("doGet " + req.getRemoteAddr().toString() + " " + req.getRequestURI() + " " + req.getQueryString()); path = req.getPathInfo(); diff --git a/war/src/main/java/pnews/servlet/RequesterLog.java b/war/src/main/java/pnews/servlet/RequesterLog.java new file mode 100644 index 0000000..48a3978 --- /dev/null +++ b/war/src/main/java/pnews/servlet/RequesterLog.java @@ -0,0 +1,32 @@ +package pnews.servlet; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.servlet.http.HttpServletRequest; + +public class RequesterLog { + public static final RequesterLog singleton = new RequesterLog(); + private Writer writer; + private Logger LOG = Logger.getLogger(RequesterLog.class.getName()); + + public void writeRequest(HttpServletRequest rq) { + try { + synchronized(this) { + if (writer == null) + writer = new BufferedWriter(new FileWriter("access.log", true), 1024); + } + + synchronized (writer) { + writer.write(rq.getRemoteAddr() + " " + rq.getRequestURI() + " " + rq.getQueryString() + "\n"); + writer.flush(); + } + } catch (IOException e) { + LOG.log(Level.SEVERE, "Fails to log requester information", e); + } + } +} -- 2.7.4