Author: rjung Date: Mon Dec 3 14:13:04 2012 New Revision: 1416531 URL: http://svn.apache.org/viewvc?rev=1416531&view=rev Log: Only rename AccessLogValve file with renameOnrotate=true if target file does not already exist.
We don't want to overwrite existing files. Prefer not to rotate. Typical case would be several ALV instances configured to use the same file name. Only the first one should rename on rotate. Backport of r1416529 from trunk. Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/AccessLogValve.java tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/LocalStrings.properties Propchange: tomcat/tc7.0.x/trunk/ ------------------------------------------------------------------------------ Merged /tomcat/trunk:r1416529 Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/AccessLogValve.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/AccessLogValve.java?rev=1416531&r1=1416530&r2=1416531&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/AccessLogValve.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/AccessLogValve.java Mon Dec 3 14:13:04 2012 @@ -1092,13 +1092,17 @@ public class AccessLogValve extends Valv writer.close(); if (rename && renameOnRotate) { File newLogFile = getLogFile(true); - try { - if (!currentLogFile.renameTo(newLogFile)) { - log.error(sm.getString("accessLogValve.renameFail", currentLogFile, newLogFile)); + if (!newLogFile.exists()) { + try { + if (!currentLogFile.renameTo(newLogFile)) { + log.error(sm.getString("accessLogValve.renameFail", currentLogFile, newLogFile)); + } + } catch (Throwable e) { + ExceptionUtils.handleThrowable(e); + log.error(sm.getString("accessLogValve.renameFail", currentLogFile, newLogFile), e); } - } catch (Throwable e) { - ExceptionUtils.handleThrowable(e); - log.error(sm.getString("accessLogValve.renameFail", currentLogFile, newLogFile), e); + } else { + log.error(sm.getString("accessLogValve.alreadyExists", currentLogFile, newLogFile)); } } writer = null; Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/LocalStrings.properties?rev=1416531&r1=1416530&r2=1416531&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/LocalStrings.properties (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/LocalStrings.properties Mon Dec 3 14:13:04 2012 @@ -27,6 +27,7 @@ accessLogValve.closeFail=Failed to close accessLogValve.openDirFail=Failed to create directory [{0}] for access logs accessLogValve.rotateFail=Failed to rotate access log accessLogValve.renameFail=Failed to rename access log from [{0}] to [{1}] +accessLogValve.alreadyExists=Failed to rename access log from [{0}] to [{1}], file already exists. accessLogValve.invalidLocale=Failed to set locale to [{0}] accessLogValve.unsupportedEncoding=Failed to set encoding to [{0}], will use the system default character set. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org