summaryrefslogtreecommitdiff
path: root/bin/weblogs-rotate
diff options
context:
space:
mode:
authorPeter Palfrader <peter@palfrader.org>2006-10-18 13:11:27 +0000
committerweasel <weasel@bc3d92e2-beff-0310-a7cd-cc87d7ac0ede>2006-10-18 13:11:27 +0000
commit1b2b1db5d7c0240237fda8988ef419c5a01c3042 (patch)
treefefba329a2deea1acfd3c97b60502b5f81c103cd /bin/weblogs-rotate
parent0ea00fc8c29354a04054a6133b17872c8c3d0461 (diff)
Do weblogs
git-svn-id: svn+ssh://asteria.noreply.org/svn/weaselutils/trunk@203 bc3d92e2-beff-0310-a7cd-cc87d7ac0ede
Diffstat (limited to 'bin/weblogs-rotate')
-rwxr-xr-xbin/weblogs-rotate46
1 files changed, 46 insertions, 0 deletions
diff --git a/bin/weblogs-rotate b/bin/weblogs-rotate
new file mode 100755
index 0000000..98e969f
--- /dev/null
+++ b/bin/weblogs-rotate
@@ -0,0 +1,46 @@
+#!/usr/bin/ruby
+
+require 'optparse'
+
+$VERBOSE = nil
+
+def show_help(parser, code=0, io=STDOUT)
+ io.puts parser
+ exit(code)
+end
+ARGV.options do |opts|
+ opts.on_tail("-h", "--help", "Display this help screen") { show_help(opts) }
+ opts.on("-v", "--verbose" , nil, "Be verbose") { $VERBOSE = 1 }
+ opts.parse!
+end
+
+
+root = '/srv/www/vhosts'
+Dir.chdir(root)
+
+today = Time.new.strftime("%Y-%m-%d");
+Dir.glob("*").each{ |client|
+ Dir.chdir(root)
+ next unless File.stat( client ).directory?
+ next unless File.exist?( client + "/logs" )
+ next unless File.stat( client + "/logs" ).directory?
+
+ logroot = root+"/"+client+"/logs"
+ Dir.chdir(logroot)
+ Dir.glob("*.log").each{ |filename|
+ targetname = filename +"."+ today
+
+ if File.exist?(targetname) or
+ File.exist?(targetname+".gz") or
+ File.exist?(targetname+".bz2")
+ STDERR.puts("Not moving #{filename}: Target exists.");
+ else
+ puts "Moving #{filename}" if $VERBOSE
+ File.rename( filename , targetname );
+ end
+ }
+}
+
+system ("/usr/sbin/apache2ctl graceful") or throw "system apache2ctl graceful failed"
+## graceful means that apache might not close the old logfile immediately
+## therefore we compress an hour later in a different script