Jump to content

WebObjects/Web Applications/Deployment/Logging

From Wikibooks, open books for an open world

Log Rotation

[edit | edit source]

Mike Kienenberger

[edit | edit source]

I can't remember who gave me the basic starting point for this, but I think it may have been one of the Jonathans. You'll need to change the filenames to make it work under non-unix deployment systems.

You'll find it easier to copy out the source by going into Edit mode first.

   public static void main(String argv[])
   {
       try
       {
           String baseOutputPath = null;
           
           //look for a -WOOutputPath argument
           for (int i=0; i<argv.length; i++) {
               if (  argv[i].equals("-WOOutputPath") &&
                   !argv[i+1].equals("/dev/null")  ) {
                   String outputPath = argv[i+1];
                   baseOutputPath = outputPath;
                   java.io.File outputFile = new java.io.File(outputPath);
                   if (outputFile.exists()) {
                       // move old file out of way to new location,
                       //name based on existing name with an appended timestamp
 
                       // Format the current time.
                       java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
                       java.util.GregorianCalendar now = new java.util.GregorianCalendar();
                       String dateSuffix = ".bck-" + formatter.format(now.getTime());
                       System.err.println("new name: " + outputPath + dateSuffix);
                       java.io.File renamedFile = new java.io.File(outputPath + dateSuffix);
                       outputFile.renameTo(renamedFile);
                   }
                   break;
               }
           }
       }
       catch (Throwable e) {
           //just so any Throwables generated in trying to do this don't
           //keep our app from launching.
           System.err.println("Ignoring: " + e);
       }
 
       WOApplication.main(argv, Application.class);
   }