Class: S3Loggable::Logger
- Inherits:
-
Object
- Object
- S3Loggable::Logger
- Defined in:
- lib/s3_loggable/logger.rb
Instance Attribute Summary collapse
-
#bucket ⇒ Object
readonly
Returns the value of attribute bucket.
-
#s3 ⇒ Object
readonly
Returns the value of attribute s3.
Instance Method Summary collapse
- #create_log(filename, temp_filename) ⇒ Object
- #get_log(filename) ⇒ Object
-
#initialize(bucket_name) ⇒ Logger
constructor
A new instance of Logger.
- #log_to_s3(message, id, folder, date_time = DateTime.now) ⇒ Object
- #set_s3_bucket(bucket_name) ⇒ Object
- #write_to_log(filename, message, date_time, file, temp_filename) ⇒ Object
Constructor Details
#initialize(bucket_name) ⇒ Logger
Returns a new instance of Logger.
8 9 10 11 |
# File 'lib/s3_loggable/logger.rb', line 8 def initialize(bucket_name) @s3 = Fog::Storage.new({:provider => 'AWS'}) if S3Loggable.credentials? set_s3_bucket(bucket_name) end |
Instance Attribute Details
#bucket ⇒ Object (readonly)
Returns the value of attribute bucket.
6 7 8 |
# File 'lib/s3_loggable/logger.rb', line 6 def bucket @bucket end |
#s3 ⇒ Object (readonly)
Returns the value of attribute s3.
6 7 8 |
# File 'lib/s3_loggable/logger.rb', line 6 def s3 @s3 end |
Instance Method Details
#create_log(filename, temp_filename) ⇒ Object
48 49 50 51 52 53 54 55 |
# File 'lib/s3_loggable/logger.rb', line 48 def create_log(filename, temp_filename) file = @bucket.files.create(:key => filename, :content_type => "application/gzip") FileUtils.mkdir_p(File.dirname(temp_filename)) temp_file = File.new(temp_filename, 'w') temp_file.close file end |
#get_log(filename) ⇒ Object
43 44 45 46 |
# File 'lib/s3_loggable/logger.rb', line 43 def get_log(filename) file = @bucket.files.get(filename) file end |
#log_to_s3(message, id, folder, date_time = DateTime.now) ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/s3_loggable/logger.rb', line 18 def log_to_s3(, id, folder, date_time = DateTime.now) filename = "%s/%s/%04d/%02d/%02d%s" % [folder, id, date_time.year, date_time.month, date_time.day, ".rb.gz"] temp_filename = "tmp/#{filename}" file = get_log(filename) file = create_log(filename, temp_filename) unless file write_to_log(filename, , date_time, file, temp_filename) end |
#set_s3_bucket(bucket_name) ⇒ Object
13 14 15 16 |
# File 'lib/s3_loggable/logger.rb', line 13 def set_s3_bucket(bucket_name) @bucket = @s3.directories.get(bucket_name) @bucket = @s3.directories.create(:key => bucket_name) unless @bucket end |
#write_to_log(filename, message, date_time, file, temp_filename) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/s3_loggable/logger.rb', line 26 def write_to_log(filename, , date_time, file, temp_filename) local_file = File.open(temp_filename, 'w') local_file.write(file.body) local_file.close File.open(temp_filename, "a+") do |file_gz_io| Zlib::GzipWriter.wrap(file_gz_io) do |file_gz| file_gz.puts date_time.to_s file_gz.puts .to_s file_gz.puts end end file.body = File.open(temp_filename) file.save File.delete(local_file) file end |