From 57a8af478f104966f50815f109b9bcbc15bfb35a Mon Sep 17 00:00:00 2001 From: David McKnight Date: Wed, 13 May 2009 15:31:30 +0000 Subject: [PATCH] [269908] [dstore] rsecomm.log file management --- .../dstore/core/server/ServerLogger.java | 51 ++++++++++++++++--- 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/rse/plugins/org.eclipse.dstore.core/src/org/eclipse/dstore/core/server/ServerLogger.java b/rse/plugins/org.eclipse.dstore.core/src/org/eclipse/dstore/core/server/ServerLogger.java index 2d6e4ce9ccd..20e483ece3b 100644 --- a/rse/plugins/org.eclipse.dstore.core/src/org/eclipse/dstore/core/server/ServerLogger.java +++ b/rse/plugins/org.eclipse.dstore.core/src/org/eclipse/dstore/core/server/ServerLogger.java @@ -18,6 +18,7 @@ * Noriaki Takatsu (IBM) - [239419] [multithread] Dynamically change the level of logging * David McKnight (IBM) - [244876] [dstore] make DEBUG a non-final variable of the ServerLogger class * David McKnight (IBM) - [271914] [dstore] Setting debug on/off dynamically + * David McKnight (IBM) - [269908] [dstore] rsecomm.log file management ********************************************************************************/ package org.eclipse.dstore.core.server; @@ -93,12 +94,7 @@ public class ServerLogger implements IServerLogger if (_logFileStream == null) { if (logToFile) { try { - File _logFile = new File(logPathName, "rsecomm.log"); //$NON-NLS-1$ - - if (!_logFile.exists()) { - _logFile.createNewFile(); - } - + File _logFile = getLogFile("rsecomm"); //$NON-NLS-1$ _logFileStream = new PrintWriter(new FileOutputStream(_logFile)); } catch (IOException e) { @@ -108,6 +104,49 @@ public class ServerLogger implements IServerLogger } } + private File getLogFile(String preferredName){ + String ext = ".log"; //$NON-NLS-1$ + boolean found = false; + long logFileMax = 1000000; + String logFileMaxStr = System.getProperty("RSECOMM_LOGFILE_MAX"); //$NON-NLS-1$ + if (logFileMaxStr != null && logFileMaxStr.length() > 0){ + try { + logFileMax = Integer.parseInt(logFileMaxStr); + } + catch (NumberFormatException e){ + System.err.println("ServerLogger: "+e.toString()); //$NON-NLS-1$ + } + } + + File logFile = null; + String name = null; + int suffix = 0; + while (!found) { + name = (suffix == 0) ? preferredName + ext: preferredName + suffix + ext; + logFile = new File(logPathName, name); + + if (!logFile.exists()) { + try { + logFile.createNewFile(); + found = true; + } + catch (IOException e){} + } + else { + // if the file exists, check it's size + long fileSize = logFile.length(); + if (fileSize > logFileMax){ + // file too big, need a new one + suffix++; + } + else { + found = true; + } + } + } + return logFile; + } + /** * Logs an informational message