logsly 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
- ---
2
- SHA1:
3
- metadata.gz: a6fb81dcdd7bdd7d8a54f580cfb2ff1cf50b49c2
4
- data.tar.gz: 32a14a9bdc056b017ce4f94afcadc8d7e5071097
5
- SHA512:
6
- metadata.gz: 116b8a552a2465b1383e2b02ed2d6e3cce98d1b35935699b642c9e0dbc53a6c31e48cf5d591eb21d40a3bbe8706a55ecf7152c27bf5bf2c2fa604f3a967cece6
7
- data.tar.gz: 19acb1d89951d83a7fcbaf726ce820d286f75a902856ec2a866679778671f624aa88d5a64efe3ff379273000e1e7a1505798f3b13b1ea672fb4da84382179735
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7468a6fbc210718d790d9fa8f534da73614b2374
4
+ data.tar.gz: 2da77f41fce035a41d924f6cdfc5e18fc66b0287
5
+ SHA512:
6
+ metadata.gz: 20dae74d64ad543d4726d00199388ef1c1a851c34e7fe66f784763fe812f30a2749f1d784a00e4ff8058da4a9c17e2e55c3add892d9b2b54b78a6e6c2de29cb6
7
+ data.tar.gz: 0335b12da4bf91cecdddef0b93907c6e5b592d0b0680fb88eb17e7ca3254143f84bfb02c5df4f95fcd4970c8a4d5739ae8058f5b9dfeb2388023f120926cdf72
data/README.md CHANGED
@@ -32,7 +32,7 @@ Logsly creates and delegates to a [Logging logger](https://github.com/TwP/loggin
32
32
  ## Settings
33
33
 
34
34
  * `log_type`: custom string used to identify the type of the logger
35
- * `level`: the level in use (default: `'debug'`)
35
+ * `level`: the level in use (default: `'info'`)
36
36
  * `outputs`: list of named outputs to log to (default: `[]`)
37
37
 
38
38
  ## Outputs
@@ -41,8 +41,9 @@ Logsly creates and delegates to a [Logging logger](https://github.com/TwP/loggin
41
41
 
42
42
  ```ruby
43
43
  Logsly.stdout('my_stdout') do |logger|
44
+ level 'info' # (optional) if set, this level will be used instead of the logger's setting
44
45
  pattern '[%d %-5l] : %m\n'
45
- colors 'my_colors' # use the 'my_colors' color scheme
46
+ colors 'my_colors' # use the 'my_colors' color scheme
46
47
  end
47
48
  ```
48
49
 
@@ -54,6 +55,7 @@ Define a named stdout output to use with your loggers. Pass a block to customiz
54
55
  Logsly.file('my_file') do |logger|
55
56
  path "development.log"
56
57
 
58
+ level 'debug' # log debug level when outputting to this file
57
59
  pattern '[%d %-5l] : %m\n'
58
60
  # don't use a color scheme
59
61
  end
@@ -69,6 +71,7 @@ Logsly.syslog('my_syslog') do |logger|
69
71
  facility Syslog::LOG_LOCAL0 # or whatever (default: `LOG_LOCAL0`)
70
72
  log_opts Syslog::LOG_PID # or whatever (default: `(LOG_PID | LOG_CONS)`)
71
73
 
74
+ # no custom level set, just use the logger's setting
72
75
  pattern '%m\n'
73
76
  # don't use a color scheme
74
77
  end
@@ -1,3 +1,4 @@
1
+ require 'logger'
1
2
  require 'much-plugin'
2
3
  require 'logsly/version'
3
4
  require 'logsly/logging182'
@@ -7,6 +8,8 @@ require 'logsly/outputs'
7
8
  module Logsly
8
9
  include MuchPlugin
9
10
 
11
+ DEFAULT_LEVEL = 'info'.freeze
12
+
10
13
  plugin_included do
11
14
  include InstanceMethods
12
15
 
@@ -44,21 +47,27 @@ module Logsly
44
47
 
45
48
  module InstanceMethods
46
49
 
47
- attr_reader :log_type, :level, :outputs, :logger
50
+ attr_reader :log_type, :level, :outputs, :output_loggers
48
51
 
49
52
  def initialize(log_type, opts = nil)
50
53
  opts ||= {}
51
54
 
52
55
  @log_type = log_type.to_s
53
- @level = (opts[:level] || opts['level'] || 'info').to_s
54
- @outputs = [*(opts[:outputs] || opts['outputs'] || [])]
56
+ @level = (opts[:level] || opts['level'] || DEFAULT_LEVEL).to_s
57
+ @outputs = [*(opts[:outputs] || opts['outputs'] || [])].uniq
58
+
59
+ @output_loggers = @outputs.inject({}) do |hash, output_name|
60
+ unique_name = "#{self.class.name}-#{@log_type}-#{self.object_id}-#{output_name}"
61
+ logger = Logsly::Logging182.logger[unique_name]
62
+ output = Logsly.outputs(output_name)
63
+ output_data = output.data(self)
55
64
 
56
- unique_name = "#{self.class.name}-#{@log_type}-#{self.object_id}"
57
- @logger = Logsly::Logging182.logger[unique_name]
58
- @logger.level = @level
65
+ # prefer output-specific level; fall back to general level
66
+ logger.level = output_data ? output_data.level : @level
67
+ add_appender(logger, output.to_appender(output_data))
59
68
 
60
- @outputs.each do |output|
61
- add_appender(Logsly.outputs(output).to_appender(self))
69
+ hash[output_name] = logger
70
+ hash
62
71
  end
63
72
  end
64
73
 
@@ -67,18 +76,28 @@ module Logsly
67
76
  end
68
77
 
69
78
  def file_path
70
- @file_path ||= if (appender = get_file_appender)
79
+ @file_path ||= if (appender = get_file_appender(self.appenders))
71
80
  appender.name if appender.respond_to?(:name)
72
81
  end
73
82
  end
74
83
 
75
- # delegate all calls to the @logger
84
+ # delegate all logger level method calls to the output loggers
76
85
 
77
- def method_missing(method, *args, &block)
78
- @logger.send(method, *args, &block)
86
+ ::Logger::Severity.constants.each do |name|
87
+ define_method(name.downcase) do |*args, &block|
88
+ self.output_loggers.each do |_, logger|
89
+ logger.send(name.downcase, *args, &block)
90
+ end
91
+ end
92
+ define_method("#{name.downcase}?") do |*args, &block|
93
+ self.output_loggers.inject(false) do |bool, (_, logger)|
94
+ bool || logger.send("#{name.downcase}?", *args, &block)
95
+ end
96
+ end
79
97
  end
80
- def respond_to?(method)
81
- super || @logger.respond_to?(method)
98
+
99
+ def appenders
100
+ @appenders ||= self.output_loggers.map{ |(_, l)| l.appenders }.flatten
82
101
  end
83
102
 
84
103
  def ==(other_logger)
@@ -97,18 +116,12 @@ module Logsly
97
116
 
98
117
  private
99
118
 
100
- def add_appender(appender)
101
- @logger.add_appenders(appender) if appender && !appender_added?(appender)
102
- end
103
-
104
- def appender_added?(appender)
105
- @logger.appenders.detect do |existing|
106
- existing.kind_of?(appender.class) && existing.name == appender.name
107
- end
119
+ def add_appender(output_logger, appender)
120
+ output_logger.add_appenders(appender) if appender
108
121
  end
109
122
 
110
- def get_file_appender
111
- @logger.appenders.detect{ |a| a.kind_of?(Logsly::Logging182::Appenders::File) }
123
+ def get_file_appender(appenders)
124
+ self.appenders.detect{ |a| a.kind_of?(Logsly::Logging182::Appenders::File) }
112
125
  end
113
126
 
114
127
  end
@@ -4,11 +4,14 @@ require 'logsly/logging182'
4
4
  module Logsly; end
5
5
  module Logsly::Outputs
6
6
 
7
+ DEFAULT_PATTERN = '%m\n'.freeze # log the message only
8
+
7
9
  ## NULL
8
10
 
9
11
  class Null
10
- def to_appender(*args); nil; end
11
- def to_layout(*args); nil; end
12
+ def data(*args); nil; end
13
+ def to_layout(data); nil; end
14
+ def to_appender(data); nil; end
12
15
  end
13
16
 
14
17
  ## BASE
@@ -21,17 +24,15 @@ module Logsly::Outputs
21
24
  @build = build || Proc.new{}
22
25
  end
23
26
 
24
- def to_appender(*args)
25
- self.instance_exec(*args, &@build)
26
- self.colors_obj.run_build(*args)
27
- self
27
+ def data(*args)
28
+ raise NotImplementedError
28
29
  end
29
30
 
30
31
  def to_layout(data)
31
32
  Logsly::Logging182.layouts.pattern(data.to_pattern_opts)
32
33
  end
33
34
 
34
- def to_appender(*args)
35
+ def to_appender(data)
35
36
  raise NotImplementedError
36
37
  end
37
38
 
@@ -40,8 +41,9 @@ module Logsly::Outputs
40
41
  class BaseData
41
42
 
42
43
  def initialize(*args, &build)
43
- @pattern = '%m\n'
44
+ @pattern = DEFAULT_PATTERN
44
45
  @colors = nil
46
+ @level = nil
45
47
 
46
48
  @args = args
47
49
  self.instance_exec(*@args, &(build || Proc.new{}))
@@ -57,6 +59,11 @@ module Logsly::Outputs
57
59
  @colors
58
60
  end
59
61
 
62
+ def level(value = nil)
63
+ @level = value if !value.nil?
64
+ @level
65
+ end
66
+
60
67
  def to_pattern_opts
61
68
  Hash.new.tap do |opts|
62
69
  opts[:pattern] = self.pattern if self.pattern
@@ -79,8 +86,11 @@ module Logsly::Outputs
79
86
 
80
87
  class Stdout < Base
81
88
 
82
- def to_appender(*args)
83
- data = BaseData.new(*args, &self.build)
89
+ def data(*args)
90
+ BaseData.new(*args, &self.build)
91
+ end
92
+
93
+ def to_appender(data)
84
94
  Logsly::Logging182.appenders.stdout(:layout => self.to_layout(data))
85
95
  end
86
96
 
@@ -90,8 +100,11 @@ module Logsly::Outputs
90
100
 
91
101
  class File < Base
92
102
 
93
- def to_appender(*args)
94
- data = FileData.new(*args, &self.build)
103
+ def data(*args)
104
+ FileData.new(*args, &self.build)
105
+ end
106
+
107
+ def to_appender(data)
95
108
  Logsly::Logging182.appenders.file(data.path, :layout => self.to_layout(data))
96
109
  end
97
110
 
@@ -110,10 +123,13 @@ module Logsly::Outputs
110
123
 
111
124
  class Syslog < Base
112
125
 
113
- def to_appender(*args)
126
+ def data(*args)
127
+ SyslogData.new(*args, &self.build)
128
+ end
129
+
130
+ def to_appender(data)
114
131
  ::Syslog.close if ::Syslog.opened?
115
132
 
116
- data = SyslogData.new(*args, &self.build)
117
133
  Logsly::Logging182.appenders.syslog(data.identity, {
118
134
  :logopt => data.log_opts,
119
135
  :facility => data.facility,
@@ -126,9 +142,9 @@ module Logsly::Outputs
126
142
  class SyslogData < BaseData
127
143
 
128
144
  def initialize(*args, &build)
129
- super
130
145
  @log_opts = (::Syslog::LOG_PID | ::Syslog::LOG_CONS)
131
146
  @facility = ::Syslog::LOG_LOCAL0
147
+ super
132
148
  end
133
149
 
134
150
  def identity(value = nil)
@@ -1,3 +1,3 @@
1
1
  module Logsly
2
- VERSION = "1.3.1"
2
+ VERSION = "1.3.2"
3
3
  end
@@ -17,6 +17,10 @@ module Logsly
17
17
 
18
18
  should have_imeths :reset, :colors, :stdout, :file, :syslog, :outputs
19
19
 
20
+ should "know its default level" do
21
+ assert_equal 'info', DEFAULT_LEVEL
22
+ end
23
+
20
24
  should "return a NullColors obj when requesting a color scheme that isn't defined" do
21
25
  assert_kind_of NullColors, Logsly.colors('not_defined_yet')
22
26
  end
@@ -107,39 +111,45 @@ module Logsly
107
111
  end
108
112
  subject{ @logger }
109
113
 
110
- should have_readers :log_type, :level, :outputs, :logger
114
+ should have_readers :log_type, :level, :outputs, :output_loggers
111
115
  should have_imeths :mdc, :file_path
116
+ should have_imeths *::Logger::Severity.constants.map{ |n| n.downcase.to_sym }
117
+ should have_imeths *::Logger::Severity.constants.map{ |n| "#{n.downcase}?".to_sym }
112
118
 
113
119
  should "know its log_type" do
114
120
  assert_equal 'testy_log_logger', subject.log_type
115
121
  end
116
122
 
117
123
  should "know its default opt values" do
118
- assert_equal 'info', subject.level
119
- assert_equal [], subject.outputs
124
+ assert_equal DEFAULT_LEVEL, subject.level
125
+ assert_equal [], subject.outputs
120
126
  end
121
127
 
122
128
  should "allow overridding the default opt values" do
123
- log = TestLogger.new(:testy_debug_logger, :level => :debug, :outputs => [:stdout])
129
+ log = TestLogger.new(:testy_debug_logger, {
130
+ :level => :debug,
131
+ :outputs => :stdout
132
+ })
124
133
  assert_equal 'debug', log.level
125
134
  assert_equal [:stdout], log.outputs
126
135
  end
127
136
 
128
- should "create a Logsly::Logging182::Logger" do
129
- assert_not_nil subject.logger
130
- assert_kind_of Logsly::Logging182::Logger, subject.logger
131
- end
137
+ should "create a Logsly::Logging182::Logger for each output" do
138
+ assert_empty subject.output_loggers
132
139
 
133
- should "create the Logsly::Logging182::Logger with a unique name" do
134
- exp = "#{subject.class.name}-testy_log_logger-#{subject.object_id}"
135
- assert_equal exp, subject.logger.name
136
- end
140
+ outputs = Factory.integer(3).times.map{ Factory.string }
141
+ log = TestLogger.new(:testy_log_logger, :outputs => outputs)
142
+ outputs.each do |output|
143
+ logger = log.output_loggers[output]
144
+ assert_kind_of Logsly::Logging182::Logger, logger
137
145
 
138
- should "set the logger's level" do
139
- assert_equal Logsly::Logging182::LEVELS['info'], subject.logger.level
146
+ # set a unique name for each logger
147
+ exp = "#{log.class.name}-testy_log_logger-#{log.object_id}-#{output}"
148
+ assert_equal exp, logger.name
140
149
 
141
- log = TestLogger.new('test', :level => :debug)
142
- assert_equal Logsly::Logging182::LEVELS['debug'], log.logger.level
150
+ # default the level for each logger
151
+ assert_equal Logsly::Logging182::LEVELS[DEFAULT_LEVEL], logger.level
152
+ end
143
153
  end
144
154
 
145
155
  should "set mdc key/value pairs" do
@@ -159,37 +169,50 @@ module Logsly
159
169
 
160
170
  class AppenderTests < UnitTests
161
171
  setup do
162
- Logsly.stdout 'my_stdout'
172
+ Logsly.stdout('my_stdout') do |logger|
173
+ level 'debug'
174
+ end
163
175
  Logsly.file('my_file') do |logger|
164
176
  path "log/development-#{logger.log_type}.log"
177
+ level 'debug'
165
178
  end
166
179
  Logsly.file('my_other_file') do |logger|
167
180
  path "log/other-#{logger.log_type}.log"
168
181
  end
169
182
  Logsly.syslog('my_syslog') do |logger|
170
183
  identity "my_syslog_logger-#{logger.log_type}"
184
+ level 'debug'
171
185
  end
172
186
  end
173
187
 
174
- should "add a named stdout appender" do
188
+ should "add a named stdout appender and honor its level" do
175
189
  log = TestLogger.new(:test, :outputs => 'my_stdout')
176
190
  assert_includes_appender Logsly::Logging182::Appenders::Stdout, log
177
191
  assert_nil log.file_path
192
+
193
+ exp = Logsly::Logging182::LEVELS['debug']
194
+ assert_equal exp, log.output_loggers['my_stdout'].level
178
195
  end
179
196
 
180
- should "add a named file appender" do
197
+ should "add a named file appender and honor its level" do
181
198
  log = TestLogger.new(:test, :outputs => 'my_file')
182
199
  filelog = extract_appender_from_logger(log, :file)
183
200
 
184
201
  assert_includes_appender Logsly::Logging182::Appenders::File, log
185
202
  assert_equal 'log/development-test.log', filelog.name
186
203
  assert_equal 'log/development-test.log', log.file_path
204
+
205
+ exp = Logsly::Logging182::LEVELS['debug']
206
+ assert_equal exp, log.output_loggers['my_file'].level
187
207
  end
188
208
 
189
- should "add a named syslog appender" do
209
+ should "add a named syslog appender and honor its level" do
190
210
  log = TestLogger.new(:test, :outputs => 'my_syslog')
191
211
  assert_includes_appender Logsly::Logging182::Appenders::Syslog, log
192
212
  assert_nil log.file_path
213
+
214
+ exp = Logsly::Logging182::LEVELS['debug']
215
+ assert_equal exp, log.output_loggers['my_syslog'].level
193
216
  end
194
217
 
195
218
  should "not add duplicate appenders" do
@@ -8,6 +8,30 @@ module Logsly::Outputs
8
8
 
9
9
  class UnitTests < Assert::Context
10
10
  desc "Logsly::Outputs"
11
+ subject{ @out }
12
+
13
+ should "know its default pattern" do
14
+ assert_equal '%m\n', Logsly::Outputs::DEFAULT_PATTERN
15
+ end
16
+
17
+ end
18
+
19
+ class NullTests < UnitTests
20
+ desc "Null"
21
+ setup do
22
+ @out = Null.new
23
+ end
24
+
25
+ should have_imeths :data, :to_layout, :to_appender
26
+
27
+ should "know its data" do
28
+ assert_nil subject.data
29
+ end
30
+
31
+ should "always return `nil` converting to a layout/appender" do
32
+ assert_nil subject.to_layout(Factory.string)
33
+ assert_nil subject.to_appender(Factory.string)
34
+ end
11
35
 
12
36
  end
13
37
 
@@ -16,10 +40,9 @@ module Logsly::Outputs
16
40
  setup do
17
41
  @out = Base.new
18
42
  end
19
- subject{ @out }
20
43
 
21
44
  should have_reader :build
22
- should have_imeths :to_layout, :to_appender
45
+ should have_imeths :data, :to_layout, :to_appender
23
46
 
24
47
  should "know its build" do
25
48
  build_proc = Proc.new{}
@@ -28,9 +51,10 @@ module Logsly::Outputs
28
51
  assert_same build_proc, out.build
29
52
  end
30
53
 
31
- should "expect `to_appender` to be defined by subclasses" do
54
+ should "expect `data` and `to_appender` to be defined by subclasses" do
55
+ assert_raises(NotImplementedError){ subject.data }
32
56
  assert_raises NotImplementedError do
33
- subject.to_appender
57
+ subject.to_appender(Factory.string)
34
58
  end
35
59
  end
36
60
 
@@ -79,21 +103,24 @@ module Logsly::Outputs
79
103
  @data = BaseData.new(@arg) do |*args|
80
104
  pattern args.first
81
105
  colors 'a_color_scheme'
106
+ level 'info'
82
107
  end
83
108
  end
84
109
  subject{ @data }
85
110
 
86
- should have_imeths :pattern, :colors
111
+ should have_imeths :pattern, :colors, :level
87
112
 
88
113
  should "know its defaults" do
89
114
  data = BaseData.new
90
- assert_equal '%m\n', data.pattern
115
+ assert_equal DEFAULT_PATTERN, data.pattern
91
116
  assert_nil data.colors
117
+ assert_nil data.level
92
118
  end
93
119
 
94
120
  should "instance exec its build with args" do
95
121
  assert_equal '%d : %m\n', subject.pattern
96
122
  assert_equal 'a_color_scheme', subject.colors
123
+ assert_equal 'info', subject.level
97
124
  end
98
125
 
99
126
  should "know its layout pattern opts hash" do
@@ -124,6 +151,7 @@ module Logsly::Outputs
124
151
  @out = Stdout.new do |logger|
125
152
  pattern logger.pattern
126
153
  colors 'a_color_scheme'
154
+ level 'info'
127
155
  end
128
156
  end
129
157
  subject{ @out }
@@ -132,13 +160,21 @@ module Logsly::Outputs
132
160
  assert_kind_of Base, subject
133
161
  end
134
162
 
163
+ should "know its data" do
164
+ data = subject.data(@logger)
165
+ assert_instance_of BaseData, data
166
+ assert_equal @logger.pattern, data.pattern
167
+ assert_equal 'a_color_scheme', data.colors
168
+ assert_equal 'info', data.level
169
+ end
170
+
135
171
  should "build a Logsly::Logging182 stdout appender, passing args to the builds" do
136
- appender = subject.to_appender @logger
172
+ appender = subject.to_appender(subject.data(@logger))
137
173
 
138
174
  assert_kind_of Logsly::Logging182::Appenders::Stdout, appender
139
175
  assert_kind_of Logsly::Logging182::Layouts::Pattern, appender.layout
140
176
  assert_kind_of Logsly::Logging182::ColorScheme, appender.layout.color_scheme
141
- assert_equal '%d : %m\n', appender.layout.pattern
177
+ assert_equal @logger.pattern, appender.layout.pattern
142
178
  end
143
179
 
144
180
  end
@@ -160,6 +196,7 @@ module Logsly::Outputs
160
196
 
161
197
  pattern logger.pattern
162
198
  colors 'a_color_scheme'
199
+ level 'info'
163
200
  end
164
201
  end
165
202
  subject{ @out }
@@ -168,14 +205,23 @@ module Logsly::Outputs
168
205
  assert_kind_of Base, subject
169
206
  end
170
207
 
208
+ should "know its data" do
209
+ data = subject.data(@logger)
210
+ assert_instance_of FileData, data
211
+ assert_equal @logger.file, data.path
212
+ assert_equal @logger.pattern, data.pattern
213
+ assert_equal 'a_color_scheme', data.colors
214
+ assert_equal 'info', data.level
215
+ end
216
+
171
217
  should "build a Logsly::Logging182 file appender, passing args to the builds" do
172
- appender = subject.to_appender @logger
218
+ appender = subject.to_appender(subject.data(@logger))
173
219
 
174
220
  assert_kind_of Logsly::Logging182::Appenders::File, appender
175
221
  assert_kind_of Logsly::Logging182::Layouts::Pattern, appender.layout
176
222
  assert_kind_of Logsly::Logging182::ColorScheme, appender.layout.color_scheme
177
- assert_equal 'log/dev.log', appender.name
178
- assert_equal '%d : %m\n', appender.layout.pattern
223
+ assert_equal @logger.file, appender.name
224
+ assert_equal @logger.pattern, appender.layout.pattern
179
225
  end
180
226
 
181
227
  end
@@ -210,6 +256,7 @@ module Logsly::Outputs
210
256
 
211
257
  pattern logger.pattern
212
258
  colors 'a_color_scheme'
259
+ level 'info'
213
260
  end
214
261
  end
215
262
  subject{ @out }
@@ -218,13 +265,23 @@ module Logsly::Outputs
218
265
  assert_kind_of Base, subject
219
266
  end
220
267
 
268
+ should "know its data" do
269
+ data = subject.data(@logger)
270
+ assert_instance_of SyslogData, data
271
+ assert_equal @logger.identity, data.identity
272
+ assert_equal @logger.facility, data.facility
273
+ assert_equal @logger.pattern, data.pattern
274
+ assert_equal 'a_color_scheme', data.colors
275
+ assert_equal 'info', data.level
276
+ end
277
+
221
278
  should "build a Logsly::Logging182 syslog appender, passing args to the builds" do
222
- appender = subject.to_appender @logger
279
+ appender = subject.to_appender(subject.data(@logger))
223
280
 
224
281
  assert_kind_of Logsly::Logging182::Appenders::Syslog, appender
225
282
  assert_kind_of Logsly::Logging182::Layouts::Pattern, appender.layout
226
283
  assert_kind_of Logsly::Logging182::ColorScheme, appender.layout.color_scheme
227
- assert_equal '%d : %m\n', appender.layout.pattern
284
+ assert_equal @logger.pattern, appender.layout.pattern
228
285
  end
229
286
 
230
287
  end
metadata CHANGED
@@ -1,81 +1,69 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: logsly
3
- version: !ruby/object:Gem::Version
4
- version: 1.3.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.2
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Kelly Redding
8
8
  - Collin Redding
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-06-20 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
12
+
13
+ date: 2016-07-09 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
15
16
  name: assert
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: 2.16.1
21
- type: :development
22
17
  prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - "~>"
26
- - !ruby/object:Gem::Version
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
27
22
  version: 2.16.1
28
- - !ruby/object:Gem::Dependency
23
+ type: :development
24
+ version_requirements: *id001
25
+ - !ruby/object:Gem::Dependency
29
26
  name: much-plugin
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: 0.2.0
35
- type: :runtime
36
27
  prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
28
+ requirement: &id002 !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
41
32
  version: 0.2.0
42
- - !ruby/object:Gem::Dependency
43
- name: little-plugger
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - "~>"
47
- - !ruby/object:Gem::Version
48
- version: 1.1.4
49
33
  type: :runtime
34
+ version_requirements: *id002
35
+ - !ruby/object:Gem::Dependency
36
+ name: little-plugger
50
37
  prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - "~>"
54
- - !ruby/object:Gem::Version
38
+ requirement: &id003 !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
55
42
  version: 1.1.4
56
- - !ruby/object:Gem::Dependency
57
- name: multi_json
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: 1.12.1
63
43
  type: :runtime
44
+ version_requirements: *id003
45
+ - !ruby/object:Gem::Dependency
46
+ name: multi_json
64
47
  prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
48
+ requirement: &id004 !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ~>
51
+ - !ruby/object:Gem::Version
69
52
  version: 1.12.1
53
+ type: :runtime
54
+ version_requirements: *id004
70
55
  description: Create custom loggers.
71
- email:
56
+ email:
72
57
  - kelly@kellyredding.com
73
58
  - collin.redding@me.com
74
59
  executables: []
60
+
75
61
  extensions: []
62
+
76
63
  extra_rdoc_files: []
77
- files:
78
- - ".gitignore"
64
+
65
+ files:
66
+ - .gitignore
79
67
  - Gemfile
80
68
  - LICENSE
81
69
  - README.md
@@ -122,30 +110,32 @@ files:
122
110
  - test/unit/outputs_tests.rb
123
111
  - tmp/.gitkeep
124
112
  homepage: http://github.com/redding/logsly
125
- licenses:
113
+ licenses:
126
114
  - MIT
127
115
  metadata: {}
116
+
128
117
  post_install_message:
129
118
  rdoc_options: []
130
- require_paths:
119
+
120
+ require_paths:
131
121
  - lib
132
- required_ruby_version: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - ">="
135
- - !ruby/object:Gem::Version
136
- version: '0'
137
- required_rubygems_version: !ruby/object:Gem::Requirement
138
- requirements:
139
- - - ">="
140
- - !ruby/object:Gem::Version
141
- version: '0'
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - &id005
125
+ - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: "0"
128
+ required_rubygems_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - *id005
142
131
  requirements: []
132
+
143
133
  rubyforge_project:
144
134
  rubygems_version: 2.6.4
145
135
  signing_key:
146
136
  specification_version: 4
147
137
  summary: Create custom loggers.
148
- test_files:
138
+ test_files:
149
139
  - test/helper.rb
150
140
  - test/support/factory.rb
151
141
  - test/support/logger.rb