Mega Code Archive

 
Categories / Java / Servlets
 

Servlet Logging

package net.firstpartners.nounit.utility; /**  * Title:        NoUnit - Identify Classes that are not being unit Tested  *  * Copyright (C) 2001  Paul Browne , FirstPartners.net  *  *  * This program is free software; you can redistribute it and/or   * modify it under the terms of the GNU General Public License  * as published by the Free Software Foundation; either version 2  * of the License, or (at your option) any later version.  *  * This program is distributed in the hope that it will be useful,  * but WITHOUT ANY WARRANTY; without even the implied warranty of  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  * GNU General Public License for more details.  *  * You should have received a copy of the GNU General Public License  * along with this program; if not, write to the Free Software  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.  *  * @author Paul Browne  * @version 0.6  */ import java.io.*; import javax.servlet.*; /**  * stores log of system output and system errors  * If Servlet , writes to Servlet Log File.  * If non-Servlet , writes to Output Files Specified in parameters.<BR>  * Class is mainly static , to allow ease of use (one one log file per system!!) ,  * but has a non-static constructor (for use by servlets - so reference to servlet  * log file can be set.  */ public class Logging {   //Class Level Variables   static String logFileName;       // both package level to enable testing   static String errorLogFileName;   static FileWriter logWriter;   static FileWriter errorWriter;   static boolean doLogging=false;   //default no logging unless file says otherwise   //For use in Servlet Context Logging   static ServletContext innerContext;   /**    * Constructor for Logging from Servlet    * @param inServletContext used to get access to the Servlet log files    * @exception IOException if it can't create log files    */    public Logging (ServletContext inServletContext) throws IOException {     //Store incoming Context + Set Logging Flag     this.innerContext= inServletContext;     //Set logging flag     doLogging=true;        }   /**    * do Setup    * @exception IOException if it can't create log files    */   private static void setup () {     try {       //Check if setup required - ie nothing has been setup before       if (((logFileName==null)&&(errorLogFileName==null))||(innerContext==null))       {         //Set logging flag                    doLogging=true;           //Get logging parameters           logFileName= "LogFile.txt";           errorLogFileName = "ErrorLogFile.txt";           //Create the files           logWriter = new FileWriter(logFileName,true); //append data           errorWriter = new FileWriter(errorLogFileName,true); //append                }     } catch (java.io.IOException ie) {       //do nothing - exists to keep method signature simple       //will show up as NullPointerException later     }   }   /**    * Print log of system output    * @param sysOut    */   public static void printOutput(Object sysOut){     //setup (if required)     setup();     //skip out asap if logging is turned off     if (!doLogging) {return; }     //Check for Servlet Logging     if (innerContext!=null) {       doServletLog(sysOut);     } else {       //do file logging       try {         if (sysOut instanceof Exception) {           logWriter.write(((Exception)sysOut).toString());           logWriter.flush();         }         else {           logWriter.write(sysOut.toString());           logWriter.flush();         }       } catch (java.io.IOException ioe) {         //do nothing - let app continue       }     }   }   /**    * Print log of system errors    * This method catches java.io.IOExceptions internally , so as to give a    * similar method signature to System.out.println. Also should we stop system    * if logging (and only logging) fails?    * @param sysErr    */   public static void printError(Object sysErr){     //setup (if required)     setup();     //skip out asap if logging is turned off     if (!doLogging) {return; }     //Check for Servlet Logging     if (innerContext!=null) {       doServletLog(sysErr);     } else {       //do file logging       try {         if (sysErr instanceof Exception) {           logWriter.write(((Exception)sysErr).toString());           logWriter.flush();         }         else {           logWriter.write(sysErr.toString());           logWriter.flush();         }       } catch (java.io.IOException ioe) {         //do nothing - let app continue       }     }   }   /**    * private method for handling logging to Servlets    * @param inObject to Log    */   private static void doServletLog (Object inObject) {     if(inObject instanceof Throwable) {       //Log as Exception       innerContext.log("",(Throwable)inObject);     } else {       //Log as Normal String       innerContext.log(inObject.toString());     }   }   /**    * Prints debug message to system log file.    * Catches java.io.IOExceptions internally, so as to give a    * similar method signature to System.out.println.    *    * @param object Object containing information to display    */   public static void debug(Object object){     setup();     if (doLogging) {       if (innerContext==null) {         // log debug message to file         try {           try {             logWriter.write(((Exception)object).toString());           }           catch (ClassCastException e) {             logWriter.write(object.toString());           }           logWriter.flush();         } catch (IOException e) {           //do nothing - let app continue         }       } else {         doServletLog(object);       }     }   } }