From: Derek Smith Date: 2009-05-06T09:23:15+09:00 Subject: Re: my logroll code, please critique Joel VanderWerf wrote: > Derek Smith wrote: >> Will anyone share good sample code for logging? > > There's the logger.rb in the ruby standard library (or did someone > mention that already?). It handles rotation, log levels, but perhaps not > multiprocess safety. Here is my updated code, but how do I look at the documentation from the CLI for logger, logging or any gem? For example, if I want to look at Perl docs I use perldoc -f "builtin function" or perldoc -q "F.A.Q." Finally, what about a central logging block for when at anytime 'raise StandardError' is called, the script will log to one logfile. Will anyone suggest code or how to do this? thank you! #!/usr/bin/ruby -w -W 2 require 'ftools' require 'fileutils' =begin #----------------------------- File::LOCK_SH # shared lock (for reading) File::LOCK_EX # exclusive lock (for writing) File::LOCK_NB # non-blocking request File::LOCK_UN # free lock #----------------------------- =end ###-- 10 files at 100Mb before rolling begins ---## FSIZE = 104860000 Dir.chdir("/cygdrive/c/temp/log") \ or raise StandardError, "Change dir failed to ~aevrlog!" unless File.exists?("/cygdrive/c/temp/log/zipped") File.makedirs("zipped") \ or raise StandardError, "Make dir failed to ~aevrlog/zipped!" end array1 = Dir.glob("dev*.log") array2 = Dir.glob("mon*.log") array3 = Dir.glob("fer*_se*.out") array4 = Dir.glob("fer*_se*.log") array5 = Dir.glob("fer*_in*.log") if (array1.length >= 1) array1.each { |file| if (File.size(file) > FSIZE) File.open(file, "r+") do |f| if (f.flock(File::LOCK_SH)) == 0 `/usr/bin/gzip "#{file}"` FileUtils.mv("#{file}.gz","/cygdrive/c/temp/log/zipped") end end FileUtils.touch("development.log") end } end Dir.chdir("/cygdrive/c/temp/log/zipped") \ or raise StandardError, "Change dir failed to ~aevrlog!" array1_1 = Dir["/cygdrive/c/temp/log/zipped/dev*.gz"] if (array1_1.length >= 1) if File.exists?("development.log.11.gz") FileUtils.rm_r Dir.glob("/cygdrive/c/temp/log/zipped/dev*11.gz") end if File.exists?("development.log.10.gz") File.rename("development.log.10.gz", "development.log.11.gz") end if File.exists?("development.log.9.gz") File.rename("development.log.9.gz", "development.log.10.gz") end if File.exists?("development.log.8.gz") File.rename("development.log.8.gz", "development.log.9.gz") end if File.exists?("development.log.7.gz") File.rename("development.log.7.gz", "development.log.8.gz") end if File.exists?("development.log.6.gz") File.rename("development.log.6.gz", "development.log.7.gz") end if File.exists?("development.log.5.gz") File.rename("development.log.5.gz", "development.log.6.gz") end if File.exists?("development.log.4.gz") File.rename("development.log.4.gz", "development.log.5.gz") end if File.exists?("development.log.3.gz") File.rename("development.log.3.gz", "development.log.4.gz") end if File.exists?("development.log.2.gz") File.rename("development.log.2.gz", "development.log.3.gz") end if File.exists?("development.log.1.gz") File.rename("development.log.1.gz", "development.log.2.gz") end if File.exists?("development.log.gz") File.rename("development.log.gz", "development.log.1.gz") end end -- Posted via http://www.ruby-forum.com/.