Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
robhurring committed Jan 27, 2011
0 parents commit 53fcb2f
Show file tree
Hide file tree
Showing 6 changed files with 77 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
@@ -0,0 +1,3 @@
pkg/*
*.gem
.bundle
4 changes: 4 additions & 0 deletions Gemfile
@@ -0,0 +1,4 @@
source "http://rubygems.org"

# Specify your gem's dependencies in class_logger.gemspec
gemspec
2 changes: 2 additions & 0 deletions Rakefile
@@ -0,0 +1,2 @@
require 'bundler'
Bundler::GemHelper.install_tasks
21 changes: 21 additions & 0 deletions class_logger.gemspec
@@ -0,0 +1,21 @@
# -*- encoding: utf-8 -*-
$:.push File.expand_path("../lib", __FILE__)
require "class_logger/version"

Gem::Specification.new do |s|
s.name = "class_logger"
s.version = ClassLogger::VERSION
s.platform = Gem::Platform::RUBY
s.authors = ["Rob Hurring"]
s.email = ["rob@ubrio.us"]
s.homepage = ""
s.summary = %q{Adds custom logger(s) to any ruby module or class}
s.description = %q{Allows you to create multiple loggers for any given class}

s.rubyforge_project = "class_logger"

s.files = `git ls-files`.split("\n")
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ["lib"]
end
44 changes: 44 additions & 0 deletions lib/class_logger.rb
@@ -0,0 +1,44 @@
module ClassLogger
def self.included(base)
base.extend DSL
end

module DSL
def has_logger(options = {})
send :extend, ClassMethods
default_options = {
:rotate => nil,
:max_size => nil,
:keep => nil,
:path => "%<rails_root>s/log",
:in => "%<class_name>s.log",
:as => :logger,
:formatter => proc{ |severity, time, program_name, message| "[%s,%s]: %s\n" % [severity, time, message] },
:level => ::Logger::DEBUG
}
self.setup_logger(default_options.merge(options))
end
end

module ClassMethods
def loggers
@@loggers ||= {}
end

def setup_logger(options)
file_path = File.join(options[:path], options[:in]).to_s % \
{:rails_root => (defined?(Rails) ? Rails.root : ''), :class_name => self.to_s.downcase}
if (rotate = options[:rotate])
_logger = ::Logger.new(file_path, rotate)
else
_logger = ::Logger.new(file_path, options[:keep], options[:max_size])
end
_logger.formatter = options[:formatter]
_logger.level = options[:level]

as = options[:as]
self.loggers[as] = _logger
define_method(as){ self.class.loggers[as] }
end
end
end
3 changes: 3 additions & 0 deletions lib/class_logger/version.rb
@@ -0,0 +1,3 @@
module ClassLogger
VERSION = "0.0.1"
end

0 comments on commit 53fcb2f

Please sign in to comment.