Author: thesnark
Date: 2009-04-15 08:49:36 +0000 (Wed, 15 Apr 2009)
New Revision: 26830

Modified:
   trunk/freenet/src/freenet/support/FileLoggerHook.java
Log:


Modified: trunk/freenet/src/freenet/support/FileLoggerHook.java
===================================================================
--- trunk/freenet/src/freenet/support/FileLoggerHook.java       2009-04-15 
06:43:12 UTC (rev 26829)
+++ trunk/freenet/src/freenet/support/FileLoggerHook.java       2009-04-15 
08:49:36 UTC (rev 26830)
@@ -92,7 +92,7 @@
        protected boolean redirectStdErr = false;
 
        /**
-        * Something wierd happens when the disk gets full, also we don't want 
to
+        * Something weird happens when the disk gets full, also we don't want 
to
         * block So run the actual write on another thread
         */
        protected final LinkedList<byte[]> list = new LinkedList<byte[]>();
@@ -193,6 +193,35 @@
                if(compressed) buf.append(".gz");
                return buf.toString();
        }
+       
+       /**
+        * The extra parameter int digit is to be used for creating a logfile 
name
+        * when a log exists already with the same date.
+        * @param c
+        * @param digit
+        * @param compressed
+        * @return
+        */
+       protected String getHourLogName(Calendar c, int digit, boolean 
compressed){
+               StringBuilder buf = new StringBuilder(50);
+               buf.append(baseFilename).append('-');
+               buf.append(Version.buildNumber());
+               buf.append('-');
+               buf.append(c.get(Calendar.YEAR)).append('-');
+               pad2digits(buf, c.get(Calendar.MONTH) + 1);
+               buf.append('-');
+               pad2digits(buf, c.get(Calendar.DAY_OF_MONTH));
+               buf.append('-');
+               pad2digits(buf, c.get(Calendar.HOUR_OF_DAY));
+               if (INTERVAL == Calendar.MINUTE) {
+                       buf.append('-');
+                       pad2digits(buf, c.get(Calendar.MINUTE));
+               }
+               buf.append(".log");
+               buf.append("." + digit);
+               if(compressed) buf.append(".gz");
+               return buf.toString();
+       }
 
        private StringBuilder pad2digits(StringBuilder buf, int x) {
                String s = Integer.toString(x);
@@ -245,7 +274,7 @@
                                }
                                currentFilename = new File(getHourLogName(gc, 
true));
                                synchronized(logFiles) {
-                                       if ((!logFiles.isEmpty()) && 
logFiles.getLast().filename.equals(currentFilename)) {
+                                       if((!logFiles.isEmpty()) && 
logFiles.getLast().filename.equals(currentFilename)) {
                                                logFiles.removeLast();
                                        }
                                }
@@ -267,7 +296,7 @@
                                        if (baseFilename != null) {
                                                if ((thisTime > nextHour) || 
switchedBaseFilename) {
                                                        currentFilename = 
rotateLog(currentFilename, lastTime, nextHour, gc);
-
+                                                       
                                                        gc.add(INTERVAL, 
INTERVAL_MULTIPLIER);
                                                        lastTime = nextHour;
                                                        nextHour = 
gc.getTimeInMillis();
@@ -489,6 +518,9 @@
 
        /** Initialize oldLogFiles */
        public void findOldLogFiles() {
+               GregorianCalendar gc = new GregorianCalendar();
+               File currentFilename = new File(getHourLogName(gc, true));
+               File numericSameDateFilename;
                int slashIndex = baseFilename.lastIndexOf(File.separatorChar);
                File dir;
                String prefix;
@@ -506,6 +538,7 @@
                File oldFile = null;
         if(latestFile.exists())
                FileUtil.renameTo(latestFile, previousFile);
+        
                boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
                for(int i=0;i<files.length;i++) {
                        File f = files[i];
@@ -547,7 +580,6 @@
                                        f.delete();
                                        continue;
                                }
-                               GregorianCalendar gc = new GregorianCalendar();
                                if(nums.length > 1)
                                        gc.set(Calendar.YEAR, nums[1]);
                                if(nums.length > 2)
@@ -561,6 +593,16 @@
                                gc.set(Calendar.SECOND, 0);
                                gc.set(Calendar.MILLISECOND, 0);
                                long startTime = gc.getTimeInMillis();
+                               for(int a = 1; currentFilename != null && 
currentFilename.exists(); a++){
+                                       numericSameDateFilename = new 
File(getHourLogName(gc, a, true));
+                                       if(numericSameDateFilename != null && 
numericSameDateFilename.exists()){
+                                               currentFilename = 
numericSameDateFilename;
+                                       }
+                                       else{
+                                               
FileUtil.renameTo(currentFilename, numericSameDateFilename);
+                                               currentFilename = 
numericSameDateFilename;
+                                       }
+                               }
                                if(oldFile != null) {
                                        long l = oldFile.length();
                                        OldLogFile olf = new 
OldLogFile(oldFile, lastStartTime, startTime, l);

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to