dldinternet-mixlib-logging 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ N2FlNjA3ZDExNzkzZTM2YTAxMmFmMWYyYmVmNzQ1NzhjNzYxNWQ1Zg==
5
+ data.tar.gz: !binary |-
6
+ MTQ3MDM0OTUzNzRmMTc2ZWI2NGVkNDJiZDQ4ZTM5NzM0MjRkMGEwOA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ YmUxODcxNjg3YmY3OTM1MTliZTQ1ZGZjMzAyYmZkOWMxNmZjY2YwMWJhZmJh
10
+ NmExY2UxYmQ4NjA3MWIzYWNlYmE0YzU0NjdjOWNmNzAwYTUwMDY4M2IzNjY1
11
+ MzY0YWZhNDFhZTc3OGNlMGQ5NmU3YTQ3MjkwZTYzZTBjM2YyN2Q=
12
+ data.tar.gz: !binary |-
13
+ ZWUwMzg0OTZkNWNiNWZkMGE1Y2YxNjVlZDcwMDQ0NDRiMTM3YjJhNzQ5NzI0
14
+ YjkzY2IzZjJkMWMxYWM3ZTBhM2I5ZDQzYjVmY2MyYjNhNDEzMDg0NTEwOTEy
15
+ OGY4YTA3YzJmNzMzNzExMzkyOWM1MWYzMzFhMDQ4OTc2OTlmNWI=
data/.gitignore ADDED
@@ -0,0 +1,34 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /test/tmp/
9
+ /test/version_tmp/
10
+ /tmp/
11
+
12
+ ## Specific to RubyMotion:
13
+ .dat*
14
+ .repl_history
15
+ build/
16
+
17
+ ## Documentation cache and generated files:
18
+ /.yardoc/
19
+ /_yardoc/
20
+ /doc/
21
+ /rdoc/
22
+
23
+ ## Environment normalisation:
24
+ /.bundle/
25
+ /lib/bundler/man/
26
+
27
+ # for a library or gem, you might want to ignore these files since the code is
28
+ # intended to run in multiple environments; otherwise, check them in:
29
+ # Gemfile.lock
30
+ .ruby-version
31
+ .ruby-gemset
32
+
33
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
34
+ .rvmrc
data/ChangeLog.md ADDED
@@ -0,0 +1,4 @@
1
+ ### 0.1.0 / 2014-06-16
2
+
3
+ * Initial release:
4
+
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,203 @@
1
+ Copyright (c) 2014 Christo De Lange
2
+
3
+ Apache License
4
+ Version 2.0, January 2004
5
+ http://www.apache.org/licenses/
6
+
7
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
8
+
9
+ 1. Definitions.
10
+
11
+ "License" shall mean the terms and conditions for use, reproduction,
12
+ and distribution as defined by Sections 1 through 9 of this document.
13
+
14
+ "Licensor" shall mean the copyright owner or entity authorized by
15
+ the copyright owner that is granting the License.
16
+
17
+ "Legal Entity" shall mean the union of the acting entity and all
18
+ other entities that control, are controlled by, or are under common
19
+ control with that entity. For the purposes of this definition,
20
+ "control" means (i) the power, direct or indirect, to cause the
21
+ direction or management of such entity, whether by contract or
22
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
23
+ outstanding shares, or (iii) beneficial ownership of such entity.
24
+
25
+ "You" (or "Your") shall mean an individual or Legal Entity
26
+ exercising permissions granted by this License.
27
+
28
+ "Source" form shall mean the preferred form for making modifications,
29
+ including but not limited to software source code, documentation
30
+ source, and configuration files.
31
+
32
+ "Object" form shall mean any form resulting from mechanical
33
+ transformation or translation of a Source form, including but
34
+ not limited to compiled object code, generated documentation,
35
+ and conversions to other media types.
36
+
37
+ "Work" shall mean the work of authorship, whether in Source or
38
+ Object form, made available under the License, as indicated by a
39
+ copyright notice that is included in or attached to the work
40
+ (an example is provided in the Appendix below).
41
+
42
+ "Derivative Works" shall mean any work, whether in Source or Object
43
+ form, that is based on (or derived from) the Work and for which the
44
+ editorial revisions, annotations, elaborations, or other modifications
45
+ represent, as a whole, an original work of authorship. For the purposes
46
+ of this License, Derivative Works shall not include works that remain
47
+ separable from, or merely link (or bind by name) to the interfaces of,
48
+ the Work and Derivative Works thereof.
49
+
50
+ "Contribution" shall mean any work of authorship, including
51
+ the original version of the Work and any modifications or additions
52
+ to that Work or Derivative Works thereof, that is intentionally
53
+ submitted to Licensor for inclusion in the Work by the copyright owner
54
+ or by an individual or Legal Entity authorized to submit on behalf of
55
+ the copyright owner. For the purposes of this definition, "submitted"
56
+ means any form of electronic, verbal, or written communication sent
57
+ to the Licensor or its representatives, including but not limited to
58
+ communication on electronic mailing lists, source code control systems,
59
+ and issue tracking systems that are managed by, or on behalf of, the
60
+ Licensor for the purpose of discussing and improving the Work, but
61
+ excluding communication that is conspicuously marked or otherwise
62
+ designated in writing by the copyright owner as "Not a Contribution."
63
+
64
+ "Contributor" shall mean Licensor and any individual or Legal Entity
65
+ on behalf of whom a Contribution has been received by Licensor and
66
+ subsequently incorporated within the Work.
67
+
68
+ 2. Grant of Copyright License. Subject to the terms and conditions of
69
+ this License, each Contributor hereby grants to You a perpetual,
70
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
71
+ copyright license to reproduce, prepare Derivative Works of,
72
+ publicly display, publicly perform, sublicense, and distribute the
73
+ Work and such Derivative Works in Source or Object form.
74
+
75
+ 3. Grant of Patent License. Subject to the terms and conditions of
76
+ this License, each Contributor hereby grants to You a perpetual,
77
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
78
+ (except as stated in this section) patent license to make, have made,
79
+ use, offer to sell, sell, import, and otherwise transfer the Work,
80
+ where such license applies only to those patent claims licensable
81
+ by such Contributor that are necessarily infringed by their
82
+ Contribution(s) alone or by combination of their Contribution(s)
83
+ with the Work to which such Contribution(s) was submitted. If You
84
+ institute patent litigation against any entity (including a
85
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
86
+ or a Contribution incorporated within the Work constitutes direct
87
+ or contributory patent infringement, then any patent licenses
88
+ granted to You under this License for that Work shall terminate
89
+ as of the date such litigation is filed.
90
+
91
+ 4. Redistribution. You may reproduce and distribute copies of the
92
+ Work or Derivative Works thereof in any medium, with or without
93
+ modifications, and in Source or Object form, provided that You
94
+ meet the following conditions:
95
+
96
+ (a) You must give any other recipients of the Work or
97
+ Derivative Works a copy of this License; and
98
+
99
+ (b) You must cause any modified files to carry prominent notices
100
+ stating that You changed the files; and
101
+
102
+ (c) You must retain, in the Source form of any Derivative Works
103
+ that You distribute, all copyright, patent, trademark, and
104
+ attribution notices from the Source form of the Work,
105
+ excluding those notices that do not pertain to any part of
106
+ the Derivative Works; and
107
+
108
+ (d) If the Work includes a "NOTICE" text file as part of its
109
+ distribution, then any Derivative Works that You distribute must
110
+ include a readable copy of the attribution notices contained
111
+ within such NOTICE file, excluding those notices that do not
112
+ pertain to any part of the Derivative Works, in at least one
113
+ of the following places: within a NOTICE text file distributed
114
+ as part of the Derivative Works; within the Source form or
115
+ documentation, if provided along with the Derivative Works; or,
116
+ within a display generated by the Derivative Works, if and
117
+ wherever such third-party notices normally appear. The contents
118
+ of the NOTICE file are for informational purposes only and
119
+ do not modify the License. You may add Your own attribution
120
+ notices within Derivative Works that You distribute, alongside
121
+ or as an addendum to the NOTICE text from the Work, provided
122
+ that such additional attribution notices cannot be construed
123
+ as modifying the License.
124
+
125
+ You may add Your own copyright statement to Your modifications and
126
+ may provide additional or different license terms and conditions
127
+ for use, reproduction, or distribution of Your modifications, or
128
+ for any such Derivative Works as a whole, provided Your use,
129
+ reproduction, and distribution of the Work otherwise complies with
130
+ the conditions stated in this License.
131
+
132
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
133
+ any Contribution intentionally submitted for inclusion in the Work
134
+ by You to the Licensor shall be under the terms and conditions of
135
+ this License, without any additional terms or conditions.
136
+ Notwithstanding the above, nothing herein shall supersede or modify
137
+ the terms of any separate license agreement you may have executed
138
+ with Licensor regarding such Contributions.
139
+
140
+ 6. Trademarks. This License does not grant permission to use the trade
141
+ names, trademarks, service marks, or product names of the Licensor,
142
+ except as required for reasonable and customary use in describing the
143
+ origin of the Work and reproducing the content of the NOTICE file.
144
+
145
+ 7. Disclaimer of Warranty. Unless required by applicable law or
146
+ agreed to in writing, Licensor provides the Work (and each
147
+ Contributor provides its Contributions) on an "AS IS" BASIS,
148
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
149
+ implied, including, without limitation, any warranties or conditions
150
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
151
+ PARTICULAR PURPOSE. You are solely responsible for determining the
152
+ appropriateness of using or redistributing the Work and assume any
153
+ risks associated with Your exercise of permissions under this License.
154
+
155
+ 8. Limitation of Liability. In no event and under no legal theory,
156
+ whether in tort (including negligence), contract, or otherwise,
157
+ unless required by applicable law (such as deliberate and grossly
158
+ negligent acts) or agreed to in writing, shall any Contributor be
159
+ liable to You for damages, including any direct, indirect, special,
160
+ incidental, or consequential damages of any character arising as a
161
+ result of this License or out of the use or inability to use the
162
+ Work (including but not limited to damages for loss of goodwill,
163
+ work stoppage, computer failure or malfunction, or any and all
164
+ other commercial damages or losses), even if such Contributor
165
+ has been advised of the possibility of such damages.
166
+
167
+ 9. Accepting Warranty or Additional Liability. While redistributing
168
+ the Work or Derivative Works thereof, You may choose to offer,
169
+ and charge a fee for, acceptance of support, warranty, indemnity,
170
+ or other liability obligations and/or rights consistent with this
171
+ License. However, in accepting such obligations, You may act only
172
+ on Your own behalf and on Your sole responsibility, not on behalf
173
+ of any other Contributor, and only if You agree to indemnify,
174
+ defend, and hold each Contributor harmless for any liability
175
+ incurred by, or claims asserted against, such Contributor by reason
176
+ of your accepting any such warranty or additional liability.
177
+
178
+ END OF TERMS AND CONDITIONS
179
+
180
+ APPENDIX: How to apply the Apache License to your work.
181
+
182
+ To apply the Apache License to your work, attach the following
183
+ boilerplate notice, with the fields enclosed by brackets "{}"
184
+ replaced with your own identifying information. (Don't include
185
+ the brackets!) The text should be enclosed in the appropriate
186
+ comment syntax for the file format. We also recommend that a
187
+ file or class name and description of purpose be included on the
188
+ same "printed page" as the copyright notice for easier
189
+ identification within third-party archives.
190
+
191
+ Copyright {yyyy} {name of copyright owner}
192
+
193
+ Licensed under the Apache License, Version 2.0 (the "License");
194
+ you may not use this file except in compliance with the License.
195
+ You may obtain a copy of the License at
196
+
197
+ http://www.apache.org/licenses/LICENSE-2.0
198
+
199
+ Unless required by applicable law or agreed to in writing, software
200
+ distributed under the License is distributed on an "AS IS" BASIS,
201
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
202
+ See the License for the specific language governing permissions and
203
+ limitations under the License.
data/README.md ADDED
@@ -0,0 +1,30 @@
1
+ dldinternet-mixlib-logging
2
+ ==========================
3
+
4
+ A logging mixlib
5
+
6
+ * [Homepage](https://rubygems.org/gems/dldinternet-mixlib-logging)
7
+ * [Documentation](http://rubydoc.info/gems/dldinternet-mixlib-logging/frames)
8
+ * [Email](mailto:rubygems at dldinternet.com)
9
+
10
+ ## Description
11
+
12
+ TODO: Description
13
+
14
+ ## Features
15
+
16
+ ## Examples
17
+
18
+ require 'dldinternet/mixlib/logging'
19
+
20
+ ## Requirements
21
+
22
+ ## Install
23
+
24
+ $ gem install dldinternet-mixlib-logging
25
+
26
+ ## Copyright
27
+
28
+ Copyright (c) 2014 Christo De Lange
29
+
30
+ See LICENSE.txt for details.
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+
5
+ begin
6
+ require 'bundler/setup'
7
+ rescue LoadError => e
8
+ abort e.message
9
+ end
10
+
11
+ require 'rake'
12
+
13
+ require 'rubygems/tasks'
14
+ Gem::Tasks.new
15
+
16
+ require 'cucumber/rake/task'
17
+
18
+ Cucumber::Rake::Task.new do |t|
19
+ t.cucumber_opts = %w[--format pretty]
20
+ end
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require File.expand_path('../lib/dldinternet/mixlib/logging/version', __FILE__)
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "dldinternet-mixlib-logging"
7
+ gem.version = Dldinternet::Mixlib::Logging::VERSION
8
+ gem.summary = %q{A logging mixlib}
9
+ gem.description = %q{A logging mixlib to help CLI apps which repeat the same logging patterns}
10
+ gem.license = "Apachev2"
11
+ gem.authors = ["Christo De Lange"]
12
+ gem.email = "rubygems@dldinternet.com"
13
+ gem.homepage = "https://rubygems.org/gems/dldinternet-mixlib-logging"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ['lib']
19
+
20
+ gem.add_dependency 'logging', '~> 1.8', '>= 1.8.2'
21
+
22
+ gem.add_development_dependency 'bundler', '~> 1.2'
23
+ gem.add_development_dependency 'rake', '~> 10.0'
24
+ gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
25
+ gem.add_development_dependency 'cucumber', '~> 0.10', '>= 0.10.2'
26
+ end
data/features/.gitkeep ADDED
File without changes
@@ -0,0 +1 @@
1
+ Feature: Blah blah blah
File without changes
@@ -0,0 +1,257 @@
1
+ require 'dldinternet/mixlib/logging/version'
2
+
3
+ module DLDInternet
4
+ module MixLib
5
+ module Logging
6
+
7
+ require "rubygems"
8
+ require 'rubygems/gem_runner'
9
+ require 'rubygems/exceptions'
10
+ require 'logging'
11
+
12
+ class ::Logging::ColorScheme
13
+ def scheme
14
+ @scheme
15
+ end
16
+ end
17
+
18
+ class ::Logging::Logger
19
+ class << self
20
+ def define_log_methods( logger )
21
+ ::Logging::LEVELS.each do |name,num|
22
+ code = "undef :#{name} if method_defined? :#{name}\n"
23
+ code << "undef :#{name}? if method_defined? :#{name}?\n"
24
+
25
+ if logger.level > num
26
+ code << <<-CODE
27
+ def #{name}?( ) false end
28
+ def #{name}( data = nil, trace = false ) false end
29
+ CODE
30
+ else
31
+ code << <<-CODE
32
+ def #{name}?( ) true end
33
+ def #{name}( data = nil, trace = nil )
34
+ caller = Kernel.caller[3]
35
+ num = #{num}
36
+ unless caller.match(%r(/chef/knife/chop)) # We assume anything else comes via Chef::Log ...
37
+ num -= 1
38
+ end
39
+ if num >= #{logger.level}
40
+ data = yield if block_given?
41
+ #log_event(::Logging::LogEvent.new(@name, num, caller, true))
42
+ log_event(::Logging::LogEvent.new(@name, num, data, trace.nil? ? @trace : trace))
43
+ end
44
+ true
45
+ end
46
+ CODE
47
+ end
48
+
49
+ logger._meta_eval(code, __FILE__, __LINE__)
50
+ end
51
+ logger
52
+ end
53
+ end
54
+
55
+ def logEvent(evt)
56
+ log_event evt
57
+ end
58
+ end
59
+
60
+ class ::Logging::Layouts::Pattern
61
+ # Arguments to sprintf keyed to directive letters
62
+ verbose, $VERBOSE = $VERBOSE, nil
63
+ # noinspection RubyStringKeysInHashInspection
64
+ DIRECTIVE_TABLE = {
65
+ 'c' => 'event.logger'.freeze,
66
+ 'd' => 'format_date(event.time)'.freeze,
67
+ 'F' => 'event.file'.freeze,
68
+ 'l' => '::Logging::LNAMES[event.level]'.freeze,
69
+ 'L' => 'event.line'.freeze,
70
+ 'm' => 'format_obj(event.data)'.freeze,
71
+ 'M' => 'event.method'.freeze,
72
+ 'p' => 'Process.pid'.freeze,
73
+ 'r' => 'Integer((event.time-@created_at)*1000).to_s'.freeze,
74
+ 't' => 'Thread.current.object_id.to_s'.freeze,
75
+ 'T' => 'Thread.current[:name]'.freeze,
76
+ 'C' => 'event.file != "" ? "(\e[38;5;25m#{event.file}::#{event.line}\e[0m)" : ""',
77
+ '%' => :placeholder
78
+ }.freeze
79
+
80
+ # Human name aliases for directives - used for colorization of tokens
81
+ # noinspection RubyStringKeysInHashInspection
82
+ COLOR_ALIAS_TABLE = {
83
+ 'c' => :logger,
84
+ 'd' => :date,
85
+ 'm' => :message,
86
+ 'p' => :pid,
87
+ 'r' => :time,
88
+ 'T' => :thread,
89
+ 't' => :thread_id,
90
+ 'F' => :file,
91
+ 'L' => :line,
92
+ 'M' => :method,
93
+ 'X' => :mdc,
94
+ 'x' => :ndc,
95
+ 'C' => :file_line,
96
+ }.freeze
97
+
98
+ ensure
99
+ $VERBOSE = verbose
100
+ end
101
+
102
+ class FakeLogger
103
+ def method_missing(m, *args, &block)
104
+ puts args[0]
105
+ end
106
+ end
107
+
108
+
109
+ def included(includer)
110
+ includer.class_eval do
111
+ attr :logger
112
+ attr_reader :args
113
+ attr_reader :step
114
+ attr_reader :TODO
115
+
116
+ # --------------------------------------------------------------------------------
117
+ def logTodo(msg)
118
+
119
+ # Regular expression used to parse out caller information
120
+ #
121
+ # * $1 == filename
122
+ # * $2 == line number
123
+ # * $3 == method name (might be nil)
124
+ caller_rgxp = %r/([-\.\/\(\)\w]+):(\d+)(?::in `(\w+)')?/o
125
+ #CALLER_INDEX = 2
126
+ caller_index = ((defined? JRUBY_VERSION and JRUBY_VERSION[%r/^1.6/]) or (defined? RUBY_ENGINE and RUBY_ENGINE[%r/^rbx/i])) ? 0 : 0
127
+ stack = Kernel.caller
128
+ return if stack.nil?
129
+
130
+ match = caller_rgxp.match(stack[caller_index])
131
+ file = match[1]
132
+ line = Integer(match[2])
133
+ modl = match[3] unless match[3].nil?
134
+
135
+ unless @TODO["#{file}::#{line}"]
136
+ le = ::Logging::LogEvent.new(@logger, ::Logging::LEVELS['todo'], msg, false)
137
+ @logger.logEvent(le)
138
+ @TODO["#{file}::#{line}"] = true
139
+ end
140
+ end
141
+
142
+ # -----------------------------------------------------------------------------
143
+ def logStep(msg)
144
+ logger = getLogger(@args, 'logStep')
145
+ if logger
146
+ logger.step "Resource #{@step+=1}: #{msg} ..."
147
+ end
148
+ end
149
+
150
+ # -----------------------------------------------------------------------------
151
+ # Set up logger
152
+
153
+ def setLogger(logger)
154
+ @logger = logger
155
+ end
156
+
157
+ def getLogger(args,from='',alogger=nil)
158
+ logger = alogger || @logger
159
+ unless logger
160
+ unless from==''
161
+ from = "#{from} - "
162
+ end
163
+ @step = 0
164
+ if args
165
+ if args.key?(:log_file) and args[:log_file]
166
+ args[:log_path] = File.dirname(args[:log_file])
167
+ elsif args[:my_name]
168
+ if args[:log_path]
169
+ args[:log_file] = "#{args[:log_path]}/#{args[:my_name]}.log"
170
+ else
171
+ args[:log_file] = "/tmp/#{args[:my_name]}.log"
172
+ end
173
+ end
174
+
175
+ begin
176
+ ::Logging.init :trace, :debug, :info, :step, :warn, :error, :fatal, :todo unless defined? ::Logging::MAX_LEVEL_LENGTH
177
+ if args[:origins] and args[:origins][:log_level]
178
+ if (::Logging::LEVELS[args[:log_level].to_s] and ::Logging::LEVELS[args[:log_level].to_s] < 2)
179
+ #puts "#{args[:log_level].to_s} = #{::Logging::LEVELS[args[:log_level].to_s]}".light_yellow
180
+ puts "#{args[:origins][:log_level]} says #{args[:log_level]}".light_yellow
181
+ else
182
+ from = ''
183
+ end
184
+ end
185
+ l_opts = args[:log_opts].call(::Logging::MAX_LEVEL_LENGTH) || {
186
+ :pattern => "#{from}%d %#{::Logging::MAX_LEVEL_LENGTH}l: %m\n",
187
+ :date_pattern => '%Y-%m-%d %H:%M:%S',
188
+ }
189
+ logger = ::Logging.logger( STDOUT, l_opts)
190
+ l_opts = args[:log_opts].call(::Logging::MAX_LEVEL_LENGTH) || {
191
+ :pattern => "#{from}%d %#{::Logging::MAX_LEVEL_LENGTH}l: %m %C\n",
192
+ :date_pattern => '%Y-%m-%d %H:%M:%S',
193
+ }
194
+ layout = ::Logging::Layouts::Pattern.new(l_opts)
195
+
196
+ if args[:log_file] and args[:log_file].instance_of?(String)
197
+ dev = args[:log_file]
198
+ a_opts = Hash.new
199
+ a_opts[:filename] = dev
200
+ a_opts[:layout] = layout
201
+ a_opts.merge! l_opts
202
+
203
+ name = case dev
204
+ when String; dev
205
+ when File; dev.path
206
+ else dev.object_id.to_s end
207
+
208
+ appender =
209
+ case dev
210
+ when String
211
+ ::Logging::Appenders::RollingFile.new(name, a_opts)
212
+ else
213
+ ::Logging::Appenders::IO.new(name, dev, a_opts)
214
+ end
215
+ logger.add_appenders appender
216
+ end
217
+
218
+ scheme = ::Logging::ColorScheme.new( 'christo', :levels => {
219
+ :trace => [:blue, :on_white],
220
+ :debug => :cyan,
221
+ :info => :green,
222
+ :step => :green,
223
+ :warn => :yellow,
224
+ :error => :red,
225
+ :fatal => [:red, :on_white],
226
+ :todo => :purple,
227
+ }).scheme
228
+ scheme[:todo] = "\e[38;5;55m"
229
+ l_opts[:color_scheme] = 'christo'
230
+ layout = ::Logging::Layouts::Pattern.new(l_opts)
231
+
232
+ appender = logger.appenders[0]
233
+ appender.layout = layout
234
+ logger.remove_appenders appender
235
+ logger.add_appenders appender
236
+
237
+ logger.level = args[:log_level] ? args[:log_level] : :warn
238
+ logger.trace = true if args[:trace]
239
+ @args = args
240
+ rescue Gem::LoadError
241
+ logger = FakeLogger.new
242
+ rescue => e
243
+ # not installed
244
+ logger = FakeLogger.new
245
+ end
246
+ @TODO = {} if @TODO.nil?
247
+ end # if args
248
+ @logger = alogger || logger
249
+ end # unless logger
250
+ logger
251
+ end # getLogger
252
+ end
253
+ end
254
+ end
255
+ end
256
+ end
257
+
@@ -0,0 +1,8 @@
1
+ module Dldinternet
2
+ module Mixlib
3
+ module Logging
4
+ # dldinternet-mixlib-logging version
5
+ VERSION = "0.1.3"
6
+ end
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dldinternet-mixlib-logging
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
5
+ platform: ruby
6
+ authors:
7
+ - Christo De Lange
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: logging
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.8'
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 1.8.2
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.8'
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 1.8.2
33
+ - !ruby/object:Gem::Dependency
34
+ name: bundler
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ~>
38
+ - !ruby/object:Gem::Version
39
+ version: '1.2'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: '1.2'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '10.0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ version: '10.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rubygems-tasks
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: '0.2'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ version: '0.2'
75
+ - !ruby/object:Gem::Dependency
76
+ name: cucumber
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ~>
80
+ - !ruby/object:Gem::Version
81
+ version: '0.10'
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: 0.10.2
85
+ type: :development
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ version: '0.10'
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: 0.10.2
95
+ description: A logging mixlib to help CLI apps which repeat the same logging patterns
96
+ email: rubygems@dldinternet.com
97
+ executables: []
98
+ extensions: []
99
+ extra_rdoc_files: []
100
+ files:
101
+ - .gitignore
102
+ - ChangeLog.md
103
+ - Gemfile
104
+ - LICENSE.txt
105
+ - README.md
106
+ - Rakefile
107
+ - dldinternet-mixlib-logging.gemspec
108
+ - features/.gitkeep
109
+ - features/dldinternet-mixlib-logging.feature
110
+ - features/step_definitions/.gitkeep
111
+ - features/step_definitions/dldinternet-mixlib-logging_steps.rb
112
+ - lib/dldinternet/mixlib/logging.rb
113
+ - lib/dldinternet/mixlib/logging/version.rb
114
+ homepage: https://rubygems.org/gems/dldinternet-mixlib-logging
115
+ licenses:
116
+ - Apachev2
117
+ metadata: {}
118
+ post_install_message:
119
+ rdoc_options: []
120
+ require_paths:
121
+ - lib
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ requirements: []
133
+ rubyforge_project:
134
+ rubygems_version: 2.2.2
135
+ signing_key:
136
+ specification_version: 4
137
+ summary: A logging mixlib
138
+ test_files:
139
+ - features/.gitkeep
140
+ - features/dldinternet-mixlib-logging.feature
141
+ - features/step_definitions/.gitkeep
142
+ - features/step_definitions/dldinternet-mixlib-logging_steps.rb