nacho       01/01/25 16:07:25

  Modified:    src/share/org/apache/tomcat/util/log Logger.java
  Log:
  Log cycle
  
  Revision  Changes    Path
  1.4       +47 -17    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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Logger.java       2001/01/20 21:44:39     1.3
  +++ Logger.java       2001/01/26 00:07:24     1.4
  @@ -98,37 +98,38 @@
   
       protected static Writer defaultSink = new OutputStreamWriter(System.err);
   
  -    // registered loggers 
  +    // registered loggers
       protected static Hashtable loggers = new Hashtable(5);
       // default logger
       public static Logger defaultLogger = new DefaultLogger();
       static {
        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. 
  +     * Prints the log message on a specified logger.
        *
  -     * @param        name            the name of the logger. 
  -     * @param        message         the message to log. 
  -     * @param        verbosityLevel  what type of message is this? 
  +     * @param        name            the name of the logger.
  +     * @param        message         the message to log.
  +     * @param        verbosityLevel  what type of message is this?
        *                               (WARNING/DEBUG/INFO etc)
        */
       /*
  -      public static void log(String logName, String message, 
  -                        int verbosityLevel) 
  +      public static void log(String logName, String message,
  +                        int verbosityLevel)
       {
        Logger logger = getLogger(logName);
        if (logger != null)
            logger.log(message, verbosityLevel);
       }
       */
  -    
  +
       /**
        * Prints the log message on a specified logger at the "default"
        * log leve: INFORMATION
  @@ -313,7 +314,7 @@
       /**
        * The timestamp format string, default is "yyyy-MM-dd hh:mm:ss"
        **/
  -    protected String timestampFormat = "yyyy-MM-dd hh:mm:ss";
  +    protected String timestampFormat = "yyyy-MM-dd HH:mm:ss";
   
       protected DateFormat timestampFormatter
        = new FastDateFormat(new SimpleDateFormat(timestampFormat));
  @@ -370,6 +371,16 @@
                          int verbosityLevel) 
       {
        if (matchVerbosityLevel(verbosityLevel)) {
  +     // Construct the timestamp we will use, if requested
  +            if (path!= null){
  +                // If the date has changed, switch log files
  +                if (day!=getDay(System.currentTimeMillis())) {
  +                    synchronized (this) {
  +                        close();
  +                        open();
  +                    }
  +                }
  +            }
            if (t == null) {
                realLog(message);
            }
  @@ -458,16 +469,18 @@
        *  You must open the logger before use, or it will write to System.err
        */
       public void open() {
  -     if (path == null) 
  +     if (path == null)
               return;
        // use default sink == System.err
  +        long date=System.currentTimeMillis();
  +        day=getDay(date);
        try {
            File file = new File(path);
  -         
  +
            if (!file.exists())
                new File(file.getParent()).mkdirs();
  -         
  -         this.sink = new FileWriter(path);
  +            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+"! ");
            System.err.println(" Using stderr as the default.");
  @@ -572,7 +585,7 @@
   
       // dummy variable to make SimpleDateFormat work right
       private static java.text.FieldPosition position = new 
java.text.FieldPosition(DateFormat.YEAR_FIELD);
  -    
  +
       protected void formatTimestamp(long msec, StringBuffer buf) {
        if (timestamp == false)
            return;
  @@ -586,7 +599,24 @@
            return;
        }
       }
  -    
  +
       // ----- Logger.Helper static inner class -----
  -    
  +
  +    String getDatePrefix(long millis) {
  +        SimpleDateFormat sdf=new SimpleDateFormat(fileDateFormat);
  +        return sdf.format(new Date(millis));
  +    }
  +
  +    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