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/.