tagged_logging 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tagged_logging (0.1.0)
4
+ tagged_logging (0.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # TaggedLogging
1
+ # TaggedLogging [![Build Status](https://travis-ci.org/ketan/tagged-logging.png?branch=master)](https://travis-ci.org/ketan/tagged-logging)
2
2
 
3
- The rails tagged logger is awesome, but it's only available in rails. This gem makes it available for non-rails applications
3
+ The rails tagged logger is awesome, but it's only available in rails. This gem makes it available for non-rails applications.
4
4
 
5
5
  ## Installation
6
6
 
@@ -19,72 +19,37 @@ Or install it yourself as:
19
19
  ## Usage
20
20
 
21
21
  ```{ruby}
22
- class MyApplication
23
- include TaggedLogging
24
- push_tags(MyApplication, Process.pid)
22
+ logger = TaggedLogging.new(Logger.new(STDERR))
25
23
 
26
- def initialize
27
- info('Initializing application')
28
- end
29
-
30
- def perform
31
- tagged("Perform") do
32
- info("performing some task")
33
- end
34
- end
24
+ logger.tagged('MyApplication', Process.pid) do |l|
25
+ l.debug 'Initializing application'
35
26
 
36
- at_exit do
37
- info('Exiting application')
27
+ tagged("Perform") do
28
+ info("performing some task")
38
29
  end
39
30
  end
40
-
41
- app = MyApplication.new
42
- app.perform
43
31
  ```
44
32
 
45
33
  The above will print the following:
46
34
 
47
35
  [2012-12-15T14:52:10+05:30] - INFO - [MyApplication] [11321] - Initializing application
48
36
  [2012-12-15T14:52:10+05:30] - INFO - [MyApplication] [11321] [Perform] - performing some task
49
- [2012-12-15T14:52:10+05:30] - INFO - [MyApplication] [11321] - Exiting application
50
-
51
- If you'd rather prefer to not pollute your class with the logger methods:
52
- ```{ruby}
53
- class MyApplication
54
- class MyLogger
55
- include TaggedLogging
56
- end
57
-
58
- class <<self
59
- attr_accessor :logger
60
- end
61
37
 
62
- def logger
63
- self.class.logger
64
- end
38
+ You can also push and pop tags as required to the same effect
65
39
 
66
- self.logger = MyLogger
67
- logger.push_tags(MyApplication, Process.pid)
40
+ ```{ruby}
41
+ logger = TaggedLogging.new(Logger.new(STDERR))
68
42
 
69
- def initialize
70
- logger.info('Initializing application')
71
- end
43
+ logger.push_tags('MyApplication', Po)
44
+ l.debug 'Initializing application'
72
45
 
73
- def perform
74
- logger.tagged("Perform") do
75
- logger.info("performing some task")
46
+ tagged("Perform") do
47
+ info("performing some task")
76
48
  end
77
49
  end
78
-
79
- at_exit do
80
- logger.info('Exiting application')
81
- end
82
- end
83
-
84
- app = MyApplication.new
85
- app.perform
86
50
  ```
87
51
 
52
+
88
53
  ## Contributing
89
54
 
90
55
  1. Fork it
@@ -1,4 +1,6 @@
1
1
  require 'time'
2
+ require 'tagged_logging/blank_ext'
3
+
2
4
  module TaggedLogging
3
5
  class Formatter < ::Logger::Formatter
4
6
 
@@ -17,6 +19,13 @@ module TaggedLogging
17
19
  FORMAT % [format_datetime(time), severity, tags_text, msg]
18
20
  end
19
21
 
22
+ def tagged(*tags)
23
+ new_tags = push_tags(*tags)
24
+ yield self
25
+ ensure
26
+ pop_tags(tags.size)
27
+ end
28
+
20
29
  def push_tags(*tags)
21
30
  tags.flatten.reject(&:blank?).tap do |new_tags|
22
31
  current_tags.concat new_tags
@@ -1,61 +1,25 @@
1
1
  require 'logger'
2
+ require 'tagged_logging/formatter'
2
3
 
3
4
  module TaggedLogging
4
- def self.included(receiver)
5
- receiver.class_eval do
6
- extend ClassMethods
7
- include InstanceMethods
8
- end
9
- end
10
-
11
- module ClassMethods
12
- def tagged(*new_tags, &block)
13
- new_tags = push_tags(*new_tags)
14
- yield(self)
15
- ensure
16
- pop_tags(new_tags.size)
17
- end
18
-
19
- [:push_tags, :pop_tags, :clear_tags!].each do |method_name|
20
- define_method(method_name) do |*args, &block|
21
- logger.formatter.send(method_name, *args, &block)
22
- end
23
- end
24
-
25
- def logger
26
- @@logger ||= ::Logger.new(STDOUT).tap do |l|
27
- l.level = ::Logger::INFO
28
- l.formatter = ::TaggedLogging::Formatter.new
29
- end
30
- end
31
5
 
32
- def logger=(logger)
33
- @@logger = logger
34
- end
35
-
36
- def flush
37
- clear_tags!
38
- logger.flush if defined?(logger.super)
39
- end
6
+ def self.new(logger)
7
+ logger.formatter = TaggedLogging::Formatter.new
8
+ logger.extend(self)
9
+ end
40
10
 
41
- [:debug, :info, :warn, :error, :fatal].each do |method_name|
42
- define_method(method_name) do |*args, &block|
43
- self.logger.send(method_name, *args, &block)
44
- end
11
+ [:push_tags, :pop_tags, :clear_tags!].each do |method_name|
12
+ define_method(method_name) do |*args, &block|
13
+ formatter.send(method_name, *args, &block)
45
14
  end
46
15
  end
47
16
 
48
- module InstanceMethods
49
- [:debug, :info, :warn, :error, :fatal].each do |method_name|
50
- define_method(method_name) do |*args, &block|
51
- self.class.logger.send(method_name, *args, &block)
52
- end
53
- end
17
+ def tagged(*tags)
18
+ formatter.tagged(*tags) { yield(self) }
19
+ end
54
20
 
55
- [:tagged, :flush, :logger, :logger=, :push_tags, :pop_tags, :clear_tags!].each do |method_name|
56
- define_method(method_name) do |*args, &block|
57
- self.class.send(method_name, *args, &block)
58
- end
59
- end
21
+ def flush
22
+ clear_tags!
23
+ super if defined?(super)
60
24
  end
61
25
  end
@@ -2,7 +2,7 @@ module TaggedLogging
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- PATCH = 0
5
+ PATCH = 1
6
6
  VERSION = [MAJOR, MINOR, PATCH].compact.join('.')
7
7
  end
8
8
  end
data/test/logger_test.rb CHANGED
@@ -4,15 +4,9 @@ require 'tagged_logging/blank_ext'
4
4
 
5
5
  class LoggerTest < Test::Unit::TestCase
6
6
 
7
- class MyLogger
8
- include TaggedLogging
9
- end
10
-
11
7
  setup do
12
8
  @output = StringIO.new
13
- @logger = MyLogger
14
- @logger.logger = ::Logger.new(@output)
15
- @logger.logger.formatter = TaggedLogging::Formatter.new
9
+ @logger = TaggedLogging.new(::Logger.new(@output))
16
10
  @logger.flush
17
11
  end
18
12
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tagged_logging
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: