nacho       01/01/26 16:40:03

  Modified:    src/share/org/apache/tomcat/util/log Logger.java
  Log:
  log cycle more flexible.
  
  Revision  Changes    Path
  1.5       +50 -45    jakarta-tomcat/src/share/org/apache/tomcat/util/log/Logger.java
  
  Index: Logger.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/log/Logger.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Logger.java       2001/01/26 00:07:24     1.4
  +++ Logger.java       2001/01/27 00:40:03     1.5
  @@ -58,9 +58,9 @@
   
   import java.io.Writer;
   import java.io.PrintWriter;
  -import java.io.OutputStreamWriter;
   import java.io.FileWriter;
   import java.io.File;
  +import java.io.OutputStreamWriter;
   import java.io.IOException;
   import java.io.StringWriter;
   import java.lang.reflect.*;
  @@ -80,6 +80,7 @@
    * 
    * @author Anil Vijendran ([EMAIL PROTECTED])
    * @author Alex Chaffee ([EMAIL PROTECTED])
  + * @author Ignacio J. Ortega ([EMAIL PROTECTED])
    * @since  Tomcat 3.1
    */
   public abstract class Logger {
  @@ -106,12 +107,12 @@
        defaultLogger.setVerbosityLevel(DEBUG);
       }
       protected long day;
  -    protected String fileDateFormat="yyyyMMdd";
       // Usefull for subclasses
       private static final String separator = System.getProperty("line.separator", 
"\n");
       public static final char[] NEWLINE=separator.toCharArray();
   
   
  +
       /**
        * Prints the log message on a specified logger.
        *
  @@ -134,8 +135,8 @@
        * Prints the log message on a specified logger at the "default"
        * log leve: INFORMATION
        *
  -     * @param        name            the name of the logger. 
  -     * @param        message         the message to log. 
  +     * @param        name            the name of the logger.
  +     * @param        message         the message to log.
        */
       /*
         public static void log(String logName, String message)
  @@ -145,12 +146,12 @@
            logger.log(message);
       }
       */
  -    
  +
       /**
        * Set the default output stream that is used by all logging
  -     * channels. 
  -     * 
  -     * @param        w               the default output stream. 
  +     * channels.
  +     *
  +     * @param        w               the default output stream.
        */
       public static void setDefaultSink(Writer w) {
        defaultSink = w;
  @@ -172,8 +173,8 @@
        return loggers.keys();
       }
   
  -    public static void putLogger(Logger logger) {    
  -     loggers.put(logger.getName(), logger);  
  +    public static void putLogger(Logger logger) {
  +     loggers.put(logger.getName(), logger);
       }
   
       public static void removeLogger(Logger logger) {
  @@ -185,7 +186,7 @@
        * nested root cause for a ServletException or TomcatException if
        * applicable
        * TODO: JDBCException too
  -     * 
  +     *
        * @param t any Throwable, or ServletException, or null
        **/
       public static String throwableToString( Throwable t ) {
  @@ -198,12 +199,12 @@
       }
   
       public static final int MAX_THROWABLE_DEPTH=3;
  -    
  +
       /**
        * Converts a Throwable to a printable stack trace, including the
        * nested root cause for a ServletException or TomcatException or
        * SQLException if applicable
  -     * 
  +     *
        * @param t any Throwable, or ServletException, or null
        * @param rootcause localized string equivalent of "Root Cause"
        **/
  @@ -217,7 +218,7 @@
        return sw.toString();
       }
   
  -    private static Object emptyObjectArray[]=new Object[0];
  +    private static Object[] emptyObjectArray=new Object[0];
   
       private static void printThrowable(PrintWriter w, Throwable t, String 
rootcause, int depth ) {
   
  @@ -295,7 +296,7 @@
       
       protected boolean custom = true;
       protected Writer sink = defaultSink;
  -    String path;
  +    protected String path;
       protected String name;
       
       private int level = WARNING;
  @@ -318,7 +319,7 @@
   
       protected DateFormat timestampFormatter
        = new FastDateFormat(new SimpleDateFormat(timestampFormat));
  -    
  +
       /**
        * Is this Log usable?
        */
  @@ -328,9 +329,7 @@
   
       /**
        * Prints the log message at the "default" log level: INFORMATION
  -     * 
  -     * @param        message         the message to log.
  -     */
  +     * @param message                the message to log.*/
       public final void log(String message) {
        log(message, Logger.INFORMATION);
       }
  @@ -367,11 +366,11 @@
        * @param        verbosityLevel  what type of message is this?
        *                               (WARNING/DEBUG/INFO etc)
        */
  -    public final void log(String message, Throwable t, 
  -                       int verbosityLevel) 
  +    public final void log(String message, Throwable t,
  +                       int verbosityLevel)
       {
        if (matchVerbosityLevel(verbosityLevel)) {
  -     // Construct the timestamp we will use, if requested
  +            // check wheter we are logging to a file
               if (path!= null){
                   // If the date has changed, switch log files
                   if (day!=getDay(System.currentTimeMillis())) {
  @@ -393,7 +392,7 @@
       public boolean matchVerbosityLevel(int verbosityLevel) {
        return verbosityLevel <= getVerbosityLevel();
       }
  -    
  +
       /**
        * Subclasses implement these methods which are called by the
        * log(..) methods internally.
  @@ -410,7 +409,7 @@
        * @param        t               the exception that was thrown.
        */
       protected abstract void realLog(String message, Throwable t);
  -    
  +
       /**
        * Flush the log. 
        */
  @@ -435,20 +434,20 @@
       /**
        * Set name of this log channel.
        *
  -     * @param        name            Name of this logger. 
  +     * @param        name            Name of this logger.
        */
       public void setName(String name) {
        this.name = name;
   
        // Once the name of this logger is set, we add it to the list
  -     // of loggers... 
  +     // of loggers...
        putLogger(this);
       }
   
       /**
        * Set the path name for the log output file.
  -     * 
  -     * @param        path            The path to the log file. 
  +     *
  +     * @param        path            The path to the log file.
        */
       public void setPath(String path) {
           if (File.separatorChar == '/')
  @@ -476,10 +475,10 @@
           day=getDay(date);
        try {
            File file = new File(path);
  -
  +            String 
logName=file.getParent()+File.separator+getDatePrefix(date,file.getName());
  +            file=new File(logName);
            if (!file.exists())
                new File(file.getParent()).mkdirs();
  -            String 
logName=file.getParent()+File.separator+getDatePrefix(date)+file.getName();
            this.sink = new FileWriter(logName);
        } catch (IOException ex) {
            System.err.print("Unable to open log file: "+path+"! ");
  @@ -520,7 +519,7 @@
       }
       
       /**
  -     * Get the current verbosity level. 
  +     * Get the current verbosity level.
        */
       public int getVerbosityLevel() {
        return this.level;
  @@ -587,7 +586,7 @@
       private static java.text.FieldPosition position = new 
java.text.FieldPosition(DateFormat.YEAR_FIELD);
   
       protected void formatTimestamp(long msec, StringBuffer buf) {
  -     if (timestamp == false)
  +     if (!timestamp)
            return;
        else if (timestampRaw) {
            buf.append(Long.toString(msec));
  @@ -599,24 +598,30 @@
            return;
        }
       }
  -
  -    // ----- Logger.Helper static inner class -----
   
  -    String getDatePrefix(long millis) {
  -        SimpleDateFormat sdf=new SimpleDateFormat(fileDateFormat);
  -        return sdf.format(new Date(millis));
  +    // ----- utility methods; -----
  +    static final String START_FORMAT="${";
  +    static final String END_FORMAT="}";
  +
  +    private String getDatePrefix(long millis,String format) {
  +        try{
  +            int pos=format.indexOf(Logger.START_FORMAT);
  +            int lpos=format.lastIndexOf(Logger.END_FORMAT);
  +            if( pos != -1 && lpos != -1){
  +                String f="'"+format.substring(0,pos)+"'"
  +                        +format.substring(pos+2,lpos)
  +                        +"'"+format.substring(lpos+1)+"'";
  +                SimpleDateFormat sdf=new SimpleDateFormat(f);
  +                return sdf.format(new Date(millis));
  +            }
  +        }catch(Exception ex){
  +        }
  +        return format;
       }
   
  -    long getDay(long millis){
  +    private long getDay(long millis){
           return (millis+TimeZone.getDefault().getRawOffset()) / ( 24*60*60*1000 );
       }
   
  -    public String getFileDateFormat() {
  -        return fileDateFormat;
  -    }
  -
  -    public void setFileDateFormat(String newFileDateFormat) {
  -        fileDateFormat = newFileDateFormat;
  -    }
   
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to