changeset 572:800f2bb57f1f

slightly better logging
author robcast
date Wed, 22 Dec 2010 17:59:01 +0100
parents 6e8488acb499
children 5d80f333828a
files servlet/src/digilib/servlet/PDFCache.java servlet/src/digilib/servlet/Scaler.java servlet/src/digilib/servlet/ServletOps.java servlet/src/digilib/servlet/Texter.java
diffstat 4 files changed, 86 insertions(+), 43 deletions(-) [+]
line wrap: on
line diff
--- a/servlet/src/digilib/servlet/PDFCache.java	Wed Dec 22 14:46:00 2010 +0100
+++ b/servlet/src/digilib/servlet/PDFCache.java	Wed Dec 22 17:59:01 2010 +0100
@@ -182,7 +182,7 @@
         } else if (status == PDFStatus.DONE) {
         	// pdf created -- send it
             try {
-                ServletOps.sendFile(getCacheFile(docid), "application/pdf", getDownloadFilename(pdfji), response);
+                ServletOps.sendFile(getCacheFile(docid), "application/pdf", getDownloadFilename(pdfji), response, logger);
                 //sendFile(docid, getDownloadFilename(pdfji), response);
             } catch (Exception e) {
             	// sending didn't work
--- a/servlet/src/digilib/servlet/Scaler.java	Wed Dec 22 14:46:00 2010 +0100
+++ b/servlet/src/digilib/servlet/Scaler.java	Wed Dec 22 17:59:01 2010 +0100
@@ -44,7 +44,7 @@
     protected static Logger accountlog = Logger.getLogger("account.request");
 
     /** gengeral logger for this class */
-    protected static Logger logger = Logger.getLogger("digilib.servlet");
+    protected static Logger logger = Logger.getLogger("digilib.scaler");
 
     /** logger for authentication related */
     protected static Logger authlog = Logger.getLogger("digilib.auth");
@@ -220,7 +220,7 @@
                     mt = "application/octet-stream";
                 }
                 logger.debug("Sending RAW File as is.");
-                ServletOps.sendFile(fileToLoad.getFile(), mt, null, response);
+                ServletOps.sendFile(fileToLoad.getFile(), mt, null, response, logger);
                 logger.info("Done in " + (System.currentTimeMillis() - startTime) + "ms");
                 return;
             }
@@ -228,7 +228,7 @@
             // if possible, send the image without actually having to transform it
             if (! jobTicket.isTransformRequired()) {
                 logger.debug("Sending File as is.");
-                ServletOps.sendFile(fileToLoad.getFile(), null, null, response);
+                ServletOps.sendFile(fileToLoad.getFile(), null, null, response, logger);
                 logger.info("Done in " + (System.currentTimeMillis() - startTime) + "ms");
                 return;
             }
@@ -246,7 +246,7 @@
             // wait for result
             DocuImage img = jobResult.get();
             // send image
-            ServletOps.sendImage(img, null, response);
+            ServletOps.sendImage(img, null, response, logger);
             logger.debug("Job Processing Time: "
                     + (System.currentTimeMillis() - startTime) + "ms");
 
@@ -308,7 +308,7 @@
                 response.sendError(status, msg);
             } else if (img != null) {
                 // default: image
-                ServletOps.sendFile(img, null, null, response);
+                ServletOps.sendFile(img, null, null, response, logger);
             }
         } catch (Exception e) {
             logger.error("Error sending error!", e);
--- a/servlet/src/digilib/servlet/ServletOps.java	Wed Dec 22 14:46:00 2010 +0100
+++ b/servlet/src/digilib/servlet/ServletOps.java	Wed Dec 22 17:59:01 2010 +0100
@@ -23,7 +23,6 @@
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintWriter;
@@ -37,7 +36,6 @@
 
 import digilib.image.DocuImage;
 import digilib.image.ImageOpException;
-import digilib.io.FileOpException;
 import digilib.io.FileOps;
 
 public class ServletOps {
@@ -182,6 +180,32 @@
      * The local file is copied to the <code>OutputStream</code> of the
      * <code>ServletResponse</code>. If mt is null then the mime-type is
      * auto-detected with mimeForFile.
+     * 
+     * @param f
+     *            Image file to be sent.
+     * @param mt
+     *            mime-type of the file.
+     * @param name
+     *            name of the download file (for application/x)
+     * @param res
+     *            ServletResponse where the image file will be sent.
+     * @throws ImageOpException
+     * @throws ServletException
+     *             Exception on sending data.
+     */
+    public static void sendFile(File f, String mt, String name,
+            HttpServletResponse response) throws ImageOpException,
+            ServletException {
+        // use default logger
+        ServletOps.sendFile(f, mt, name, response, ServletOps.logger);
+    }
+
+    /**
+     * Transfers an image file as-is with the mime type mt.
+     * 
+     * The local file is copied to the <code>OutputStream</code> of the
+     * <code>ServletResponse</code>. If mt is null then the mime-type is
+     * auto-detected with mimeForFile.
      * @param f
      *            Image file to be sent.
      * @param mt
@@ -190,10 +214,12 @@
      *            name of the download file (for application/x)
      * @param res
      *            ServletResponse where the image file will be sent.
+     * @param logger
+     *            Logger to use
      * @throws ImageOpException
      * @throws ServletException Exception on sending data.
      */
-    public static void sendFile(File f, String mt, String name, HttpServletResponse response)
+    public static void sendFile(File f, String mt, String name, HttpServletResponse response, Logger logger)
             throws ImageOpException, ServletException {
         logger.debug("sendRawFile(" + mt + ", " + f + ")");
         if (mt == null) {
@@ -243,6 +269,22 @@
     public static void sendImage(DocuImage img, String mimeType,
             HttpServletResponse response) throws ImageOpException,
             ServletException {
+        ServletOps.sendImage(img, mimeType, response, ServletOps.logger);
+    }
+
+    /**
+     * Write image img to ServletResponse response.
+     * 
+     * @param img
+     * @param mimeType
+     * @param response
+     * @param logger
+     * @throws ImageOpException
+     * @throws ServletException Exception on sending data.
+     */
+    public static void sendImage(DocuImage img, String mimeType,
+            HttpServletResponse response, Logger logger) throws ImageOpException,
+            ServletException {
         try {
             OutputStream outstream = response.getOutputStream();
             // setup output -- if mime type is set use that otherwise
--- a/servlet/src/digilib/servlet/Texter.java	Wed Dec 22 14:46:00 2010 +0100
+++ b/servlet/src/digilib/servlet/Texter.java	Wed Dec 22 17:59:01 2010 +0100
@@ -44,8 +44,6 @@
  */
 public class Texter extends HttpServlet {
 
-	private static final long serialVersionUID = -8539178734033662322L;
-
 	/** Servlet version */
 	public static String tlVersion = "0.1b2";
 
@@ -55,6 +53,9 @@
 	/** general logger */
 	Logger logger = Logger.getLogger("digilib.texter");
 
+    /** logger for accounting requests */
+    protected static Logger accountlog = Logger.getLogger("account.texter.request");
+
 	/** FileOps instance */
 	FileOps fileOp;
 
@@ -109,6 +110,7 @@
 	 */
 	protected void doGet(HttpServletRequest request,
 			HttpServletResponse response) throws ServletException, IOException {
+        accountlog.info("GET from " + request.getRemoteAddr());
 		// do the processing
 		processRequest(request, response);
 	}
@@ -121,44 +123,43 @@
 	 */
 	protected void doPost(HttpServletRequest request,
 			HttpServletResponse response) throws ServletException, IOException {
+        accountlog.info("POST from " + request.getRemoteAddr());
 		// do the processing
 		processRequest(request, response);
 	}
 
-	protected void processRequest(HttpServletRequest request,
-			HttpServletResponse response) throws ServletException, IOException {
-		
-		/*
-		 * request parameters
-		 */
+    protected void processRequest(HttpServletRequest request,
+            HttpServletResponse response) throws ServletException, IOException {
+
+        /*
+         * request parameters
+         */
         // create new request with defaults
         DigilibRequest dlRequest = new DigilibRequest(request);
-		try {
-			
-			/*
-			 * find the file to load/send
-			 */
-			TextFile f = getTextFile(dlRequest, "/txt");
-			if (f != null) {
-				ServletOps.sendFile(f.getFile(), null, null, response);
-			} else {
-				f = getTextFile(dlRequest, "");
-				if (f != null) {
-					ServletOps.sendFile(f.getFile(),	null, null, response);
-				} else {
-					response.sendError(HttpServletResponse.SC_NOT_FOUND, "Text-File not found!");
-					//ServletOps.htmlMessage("No Text-File!", response);
-				}
-			}
-			
-		} catch (ImageOpException e) {
-			logger.error("ERROR: File IO Error: ", e);
-			try {
-				ServletOps.htmlMessage("ERROR: File IO Error: " + e, response);
-			} catch (FileOpException ex) {
-			} // so we don't get a loop
-		}
-	}
+        try {
+            /*
+             * find the file to load/send
+             */
+            TextFile f = getTextFile(dlRequest, "/txt");
+            if (f != null) {
+                ServletOps.sendFile(f.getFile(), null, null, response, logger);
+            } else {
+                f = getTextFile(dlRequest, "");
+                if (f != null) {
+                    ServletOps.sendFile(f.getFile(), null, null, response, logger);
+                } else {
+                    response.sendError(HttpServletResponse.SC_NOT_FOUND,
+                            "Text-File not found!");
+                    // ServletOps.htmlMessage("No Text-File!", response);
+                }
+            }
+
+        } catch (ImageOpException e) {
+            // most likely wrong file format...
+            logger.error("ERROR sending text file: ", e);
+            response.sendError(HttpServletResponse.SC_BAD_REQUEST);
+        }
+    }
 	
 
 	/**