]> Frank Brehm's Git Trees - my-stuff/py-logrotate.git/commitdiff
Option »size« behandelt
authorFrank Brehm <frank@brehm-online.com>
Mon, 9 May 2011 21:13:39 +0000 (21:13 +0000)
committerFrank Brehm <frank@brehm-online.com>
Mon, 9 May 2011 21:13:39 +0000 (21:13 +0000)
git-svn-id: http://svn.brehm-online.com/svn/my-stuff/python/PyLogrotate/trunk@231 ec8d2aa5-1599-4edb-8739-2b3a1bc399aa

LogRotateCommon.py
LogRotateConfig.py
test/apache2

index 2092fc4a9ab3e758543eb00c86ba9bbb5bd5b980..84f46ffa0cef508e2c517c2ca5ad9f9d160f7810 100755 (executable)
@@ -213,29 +213,32 @@ def human2bytes(value, si_conform = True, use_locale_radix = False, verbose = 0)
 
     if re.search(r'^\s*(?:b(?:yte)?)?\s*$', prefix, re.IGNORECASE):
         factor = long(1)
-    elif re.search(r'^\s*k[bB](?i:yte)?\s*$', prefix):
+    elif re.search(r'^\s*k[bB](?:[Yy][Tt][Ee])?\s*$', prefix):
         factor = factor_si
-    elif re.search(r'^\s*Ki?[bB](?i:yte)?\s*$', prefix):
+    elif re.search(r'^\s*Ki?[bB](?:[Yy][Tt][Ee])?\s*$', prefix):
         factor = factor_bin
-    elif re.search(r'^\s*MB(?:yte)?\s*$', prefix, re.IGNORECASE):
+    elif re.search(r'^\s*M(?:B(?:yte)?)?\s*$', prefix, re.IGNORECASE):
         factor = (factor_si * factor_si)
     elif re.search(r'^\s*MiB(?:yte)?\s*$', prefix, re.IGNORECASE):
         factor = (factor_bin * factor_bin)
-    elif re.search(r'^\s*GB(?:yte)?\s*$', prefix, re.IGNORECASE):
+    elif re.search(r'^\s*G(?:B(?:yte)?)?\s*$', prefix, re.IGNORECASE):
         factor = (factor_si * factor_si * factor_si)
     elif re.search(r'^\s*GiB(?:yte)?\s*$', prefix, re.IGNORECASE):
         factor = (factor_bin * factor_bin * factor_bin)
-    elif re.search(r'^\s*TB(?:yte)?\s*$', prefix, re.IGNORECASE):
+    elif re.search(r'^\s*T(?:B(?:yte)?)?\s*$', prefix, re.IGNORECASE):
         factor = (factor_si * factor_si * factor_si * factor_si)
     elif re.search(r'^\s*TiB(?:yte)?\s*$', prefix, re.IGNORECASE):
         factor = (factor_bin * factor_bin * factor_bin * factor_bin)
-    elif re.search(r'^\s*PB(?:yte)?\s*$', prefix, re.IGNORECASE):
+    elif re.search(r'^\s*P(?:B(?:yte)?)?\s*$', prefix, re.IGNORECASE):
         factor = (factor_si * factor_si * factor_si * factor_si * factor_si)
     elif re.search(r'^\s*PiB(?:yte)?\s*$', prefix, re.IGNORECASE):
         factor = (factor_bin * factor_bin * factor_bin * factor_bin * factor_bin)
     else:
         raise ValueError("human2bytes(): Couldn't detect prefix »%s«." %(prefix))
 
+    if verbose > 5:
+        sys.stderr.write("human2bytes(): found factor %d\n" % (factor))
+
     return long(factor * value_float)
 
 #------------------------------------------------------------------------
index 2dffab7ea099d76cc85819ee219f75deaf2df065..96edcfe423812fcfb752b6ef124ac479fcca73ab 100755 (executable)
@@ -22,7 +22,7 @@ import os.path
 import pwd
 import grp
 
-from LogRotateCommon import split_parts, email_valid, period2days
+from LogRotateCommon import split_parts, email_valid, period2days, human2bytes
 
 revision = '$Revision$'
 revision = re.sub( r'\$', '', revision )
@@ -1327,6 +1327,25 @@ class LogrotateConfigurationReader(object):
             directive['olddir']['group'] = group
             return True
 
+        # Check for minimum size for ratation
+        match = re.search(r'^size(?:(?:\s*=|\s)|$)', line, re.IGNORECASE)
+        if match:
+            size_str = re.sub(r'^size(?:\s*=\s*|\s+)', '', line)
+            if self.verbose > 5:
+                self.logger.debug( ( _("Checking for option »size«, value: »%s« ... (file »%s«, line %s)") % (size_str, filename, linenr)))
+            if size_str is None:
+                self.logger.warning( _("Failing size definition."))
+                return False
+            size_bytes = None
+            try:
+                size_bytes = human2bytes(size_str, verbose = self.verbose)
+            except ValueError, e:
+                self.logger.warning( ( _("Invalid definition for »size«: »%s«.") %(size_str)))
+                return False
+            if self.verbose > 4:
+                self.logger.debug( ( _("Got a rotation size of %d bytes. (file »%s«, line %s)") % (size_bytes, filename, linenr)))
+            directive['size'] = size_bytes
+                
 
         return True
 
index ccd17a51849b0479d43df2be7152d76c8cdd6ce4..c559729d9a46237fd358788bec5beb2ab046de32 100644 (file)
@@ -14,7 +14,7 @@
   #error bla
   weekly
   #period 4.5days 2 hours 3.4y
-  size 1m
+  size 1M
   maxage 0.5y
   mail test@uhu-banane.de
   #olddir /var/log/apache2/%Y-%m