tee_logger 3.2.0 → 3.2.4

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
1
  ---
2
- SHA1:
3
- metadata.gz: a90d6ef3ba88bed38455955c9e7e0654440d9e80
4
- data.tar.gz: d99ccca31c41af678fe5111be644decb3e783a4c
2
+ SHA256:
3
+ metadata.gz: bc70b6c37a05823b6818f4c50fdd84ab2f7daa918850d08c2005df58ecd4e0db
4
+ data.tar.gz: 68a01c36f6e721f2c9de7dfdc48000a47cf50fdb8ce808484a40d4ba816ea7b6
5
5
  SHA512:
6
- metadata.gz: fcc81f3c5491f42351e90abb301bfc8821238fc237a843f483e29b42f5500464b1682569285bc943db7ba441ce80449e127380dfcf29ad89f881f18be3e6c974
7
- data.tar.gz: c6a2a450f5284eea3b19ddd5e71292b1816b5337d1dd3343733b5eb9db580d6c58760357ec5b9d49201bdd7222fd49fe55655b4a9c7a74508f4c35b3ac682aa1
6
+ metadata.gz: e5c9c18eb38fe4a92ff9cefd7004c5abc4cde8993e30cf92607861b64ed15952db96f0d00d409259983be84015a1c37d6d841c4a4d5dd8a7257f2a5eddb4f2ac
7
+ data.tar.gz: f543787f7d4b0ee9bbe73ccf33a4e4bbef5130c1b716ee04e816a0d50bcd6bf95d49881608ca397fd62c8edb5ad5dbb9e79633346b04e48af0aaaec44302669b
data/.rubocop_todo.yml CHANGED
@@ -0,0 +1,2 @@
1
+ Style/FrozenStringLiteralComment:
2
+ Enabled: false
data/.travis.yml CHANGED
@@ -1,10 +1,18 @@
1
1
  language: ruby
2
+
2
3
  cache: bundler
4
+
3
5
  rvm:
4
- - 2.2.3
5
- - 2.1.7
6
- - 2.0.0
7
- before_install: gem install bundler -v 1.10.4
8
- notifications:
9
- slack:
10
- secure: zCs6tIIMRaugSasz857bnfcHywMZvz2nztcTJdkvi25kZFysakVgVJ+CNBRZSHjShsnBD1H1i3ywoECKPHUiLlUDQU4ncZQoSS0qM5CcmVlE0JOHzcvY2POTadZWfVn2XvRcCcoI2k7Oy9cS+xFmbs3PP2TqbVfPStB+l9jD+QejWinpLJR05PGi8M2iqZKjxAwJ9TBoLvmHt7UtXMq6edG/Q+SVOUQMEEkLCaWzSvNQYnDiTk1ewkXF0kG5jtVx/OKjQC62ioQIBz6+I6aMfOil2MCpb8u37asXQeML/rMPfBxVuwvBSwGKpRBrJSUG5XeoWg8bbri0WUOrOGCg3LVRtdiHyUNcAYObaB69+YqFOt/F05Dgg6+9Rs53mgZM2zuvsFp2qeSD27wXCy0ZJhFyMv5YJA5paJZjOAH0ki9FWeZjC4XMasntvO7/83rCEFcqGusMckLKcKE/RdEYurzqLruF2W4FGSAvSTbARjQbtYMxmuh1xJrH4KCdCYDvoxYb4xJrGo+q77j+wnpzGBwf8nak2VcGgN6wXadeosNR31WGW+HBwv8LxTJutlXzDjBTyK2ZcaaIZASbF3liEH294ycdf9YcGlxZYxuauPsg0EXa8C0NHXkfL9Zb1CftEgULXvtBL/qNDr/cyhHWbSYZcJw5DfQYt6inBKudmEU=
6
+ - 3.0
7
+ - 2.7
8
+ - 2.6
9
+
10
+ before_install:
11
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
12
+ - chmod +x ./cc-test-reporter
13
+
14
+ before_script:
15
+ - ./cc-test-reporter before-build
16
+
17
+ after_script:
18
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
data/CHANGELOG.md CHANGED
@@ -1,84 +1,131 @@
1
- # v3.2.0
1
+ # CHANGELOG.md
2
+
3
+ ## v3.2.4
4
+
5
+ 2021-09-04 JST
6
+
7
+ - required_ruby_version change to `>= 2.6.0` because Ruby 2.5 reaches EOL.
8
+
9
+ ## v3.2.3
10
+
11
+ 2020-01-03 JST
12
+
13
+ - Add support for Ruby 3.0
14
+
15
+ ## v3.2.2
16
+
17
+ - [issue #17](https://github.com/k-ta-yamada/tee_logger/issues/17)
18
+ default settings for extend and include
19
+
20
+ ## v3.2.1
21
+
22
+ - [issue #18](https://github.com/k-ta-yamada/tee_logger/issues/18)
23
+ use initial value `DEFAULT_FILE`, it's change TeeLogger.logdev
24
+
25
+ ## v3.2.0
26
+
2
27
  - [issue #15](https://github.com/k-ta-yamada/tee_logger/issues/15)
3
28
  Before extend or include the module, allow the setting of logdev
4
29
 
5
- # v3.1.2
30
+ ## v3.1.2
31
+
6
32
  - add .gemspec required_ruby_version = '>= 2.0.0'
7
33
 
8
- # v3.1.1
34
+ ## v3.1.1
35
+
9
36
  - [[clean] module split](https://github.com/k-ta-yamada/tee_logger/pull/14)
10
37
 
11
- # v3.1.0
38
+ ## v3.1.0
39
+
12
40
  - [issue #12](https://github.com/k-ta-yamada/tee_logger/issues/12)
13
41
  Include and Extend support
14
42
 
15
- # v3.0.3
43
+ ## v3.0.3
44
+
16
45
  - shared_examples_for_tee_logger_spec.rb [ae1e481](https://github.com/k-ta-yamada/tee_logger/commit/ae1e481)
17
46
  - new constant for disabling formatter [478eccb](https://github.com/k-ta-yamada/tee_logger/commit/478eccb)
18
47
 
19
- # v3.0.2
48
+ ## v3.0.2
49
+
20
50
  - refactoring
21
51
  - CONSTANTS move to ./lib/constants.rb
22
52
 
23
- # v3.0.1
53
+ ## v3.0.1
54
+
24
55
  - refactoring for [issue #9](https://github.com/k-ta-yamada/tee_logger/issues/9)
25
56
 
26
- # v3.0.0
57
+ ## v3.0.0
58
+
27
59
  - [issue #4](https://github.com/k-ta-yamada/tee_logger/issues/4)
28
60
  logging method's parametrer disabling_target change to enabling_targe
29
61
  - [issue #5](https://github.com/k-ta-yamada/tee_logger/issues/5)
30
62
  log message indentation
31
63
 
32
- # v2.7.0
64
+ ## v2.7.0
65
+
33
66
  - add datetime_format, datetime_format=
34
67
 
35
- # v2.6.0
68
+ ## v2.6.0
69
+
36
70
  - disabling option add to logging_methods
37
71
 
38
- # v2.5.0
72
+ ## v2.5.0
73
+
39
74
  - level, progname and formatter were changed to instance variable
40
75
  - refactoring: disabling and enabling
41
76
  - rm ./lib/tee_logger/constants.rb. Constants move to ./lib/tee_logger.rb
42
77
 
43
- # v2.4.1
78
+ ## v2.4.1
79
+
44
80
  - update README.md
45
81
  - and YARD comment
46
82
 
47
- # v2.4.0
83
+ ## v2.4.0
84
+
48
85
  - TeeLogger#disable is allow block given
49
86
 
50
- # v2.3.1
87
+ ## v2.3.1
88
+
51
89
  - refactoring TeeLogger#disable
52
90
 
53
- # v2.3.0
91
+ ## v2.3.0
92
+
54
93
  - remove TeeLogger.attr_reader
55
94
  - and rename instance variable: @logger => @logfile
56
95
  - implementation `#level` and `level=`
57
96
  - implementation `#formatter` and `formatter=`
58
97
 
59
- # v2.2.0
98
+ ## v2.2.0
99
+
60
100
  - disabling and enabling
61
101
 
62
- # v2.1.1
102
+ ## v2.1.1
103
+
63
104
  - refactoring of test case
64
105
  - Introduced capture_stdout
65
106
  - Introduced FakeFS
66
107
  - Change logdev of Console for Logger from STDOUT to $ stdout
67
108
 
68
- # v2.1.0
109
+ ## v2.1.0
110
+
69
111
  - Integrate TeeLogger::Base class to TeeLogger::TeeLogger class
70
112
 
71
- # v2.0.2
113
+ ## v2.0.2
114
+
72
115
  - bugfix
73
116
 
74
- # v2.0.1
117
+ ## v2.0.1
118
+
75
119
  - bugfix
76
120
 
77
- # v2.0.0
121
+ ## v2.0.0
122
+
78
123
  - Change to Class from Module
79
124
 
80
- # v1.1.0
125
+ ## v1.1.0
126
+
81
127
  - bugfix
82
128
 
83
- # v1.0.0
129
+ ## v1.0.0
130
+
84
131
  - first
data/Gemfile CHANGED
@@ -2,5 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in tee_logger.gemspec
4
4
  gemspec
5
- gem 'codeclimate-test-reporter', group: :test, require: nil
6
- gem 'simplecov-console', group: :test, require: nil
data/README.md CHANGED
@@ -1,30 +1,57 @@
1
+ # TeeLogger
2
+
1
3
  [![Gem Version][gem_version-svg]][gem_version]
2
4
  [![Build Status][travis-svg]][travis]
5
+ [![Downloads][downloads-svg]][gem_version]
6
+ [![Inline docs][inch-ci-svg]][inch-ci]
3
7
  [![Code Climate][codeclimate-svg]][codeclimate]
4
8
  [![Test Coverage][codeclimate_cov-svg]][codeclimate_cov]
5
- [![Inline docs][inch-ci-svg]][inch-ci]
6
9
 
7
10
  > Sorry. In from version 2 to version 3, changed usage.
8
11
  > see also [CHANGELOG.md][tee_logger-changelog].
9
12
 
10
13
  - [Rubygems.org](https://rubygems.org/gems/tee_logger)
11
14
  - [GitHub](https://github.com/k-ta-yamada/tee_logger)
12
- - [RubyDoc.info](http://www.rubydoc.info/gems/tee_logger)
13
-
14
- # TeeLogger
15
+ - [RubyDoc.info](https://www.rubydoc.info/gems/tee_logger)
15
16
 
16
17
  logging to file and standard output.
17
18
  require standard library only.
18
19
 
19
-
20
- ## Characteristic
20
+ <!-- TOC -->
21
+
22
+ - [1. Characteristic](#1-characteristic)
23
+ - [2. Installation](#2-installation)
24
+ - [3. Usage](#3-usage)
25
+ - [3.1. let's logging](#31-lets-logging)
26
+ - [3.2. enable only when specified](#32-enable-only-when-specified)
27
+ - [3.3. log meassage indent](#33-log-meassage-indent)
28
+ - [3.4. enabling and indent](#34-enabling-and-indent)
29
+ - [3.5. disable console output](#35-disable-console-output)
30
+ - [3.6. enable console output](#36-enable-console-output)
31
+ - [3.7. disable logfile output](#37-disable-logfile-output)
32
+ - [3.8. enable logfile output](#38-enable-logfile-output)
33
+ - [3.9. disable in block](#39-disable-in-block)
34
+ - [3.10. and others like Logger's](#310-and-others-like-loggers)
35
+ - [4. include or extend TeeLogger](#4-include-or-extend-teelogger)
36
+ - [4.1. for casual use](#41-for-casual-use)
37
+ - [4.2. configuration logfile name, progname, level, formatter, and datetime_format](#42-configuration-logfile-name-progname-level-formatter-and-datetime_format)
38
+ - [5. Development](#5-development)
39
+ - [6. Contributing](#6-contributing)
40
+ - [7. License](#7-license)
41
+
42
+ <!-- /TOC -->
43
+
44
+ ---
45
+
46
+ ## 1. Characteristic
21
47
 
22
48
  - use standard lib only.
23
49
  - like Logger: see usage.
24
50
  - enabled or disabled by switching the output of the console and the logfile.
25
51
 
52
+ ---
26
53
 
27
- ## Installation
54
+ ## 2. Installation
28
55
 
29
56
  Add this line to your application's Gemfile:
30
57
 
@@ -34,119 +61,195 @@ gem 'tee_logger'
34
61
 
35
62
  And then execute:
36
63
 
37
- ```
38
- $ bundle
64
+ ```sh
65
+ bundle
39
66
  ```
40
67
 
41
68
  Or install it yourself as:
42
69
 
70
+ ```sh
71
+ gem install tee_logger
72
+ ```
73
+
74
+ ---
75
+
76
+ ## 3. Usage
77
+
78
+ ### 3.1. let's logging
79
+
80
+ ```ruby
81
+ require 'tee_logger'
82
+
83
+ # Logger.new like options(logdev, shift_age, shift_size)
84
+ # options default value is
85
+ # logdev = './tee_logger.log'
86
+ # shift_age = 0
87
+ # shift_size = 1_048_576
88
+ tl = TeeLogger.new
89
+
90
+ tl.debug 'hello'
91
+ tl.debug(:progname) { 'hello world' }
92
+ tl.progname = 'App'
93
+ tl.debug 'hello tee_logger'
43
94
  ```
44
- $ gem install tee_logger
95
+
96
+ ### 3.2. enable only when specified
97
+
98
+ ```ruby
99
+ tl.info 'this message is console and logfile'
100
+ tl.info 'this message is console only', :console
101
+ tl.info 'this message is logfile only', :logfile
45
102
  ```
46
103
 
104
+ ### 3.3. log meassage indent
47
105
 
48
- ## Usage
106
+ ```ruby
107
+ tl.info 'hello' # => 'hello'
108
+ tl.info 'hello', 0 # => 'hello'
109
+ tl.info 'hello', 2 # => ' hello'
110
+ ```
111
+
112
+ ### 3.4. enabling and indent
49
113
 
50
114
  ```ruby
51
- require 'tee_logger'
52
-
53
- # Logger.new like options(logdev, shift_age, shift_size)
54
- # options default value is
55
- # logdev = './tee_logger.log'
56
- # shift_age = 0
57
- # shift_size = 1_048_576
58
- tl = TeeLogger.new
59
-
60
- # let's logging
61
- tl.debug 'hello'
62
- tl.debug(:progname) { 'hello world' }
63
- tl.progname = 'App'
64
- tl.debug 'hello tee_logger'
65
-
66
- # enable only when specified
67
- tl.info 'this message is console and logfile'
68
- tl.info 'this message is console only', :console
69
- tl.info 'this message is logfile only', :logfile
70
-
71
- # log meassage indent
72
- tl.info 'hello' # => 'hello'
73
- tl.info 'hello', 0 # => 'hello'
74
- tl.info 'hello', 2 # => ' hello'
75
-
76
- # enabling and indent
77
- tl.info 'this message is console only', 2, :console
78
- tl.info 'this message is console only', :console, 2
79
-
80
- # disable console output
81
- tl.disable(:console)
82
- tl.info 'this message is logfile only'
115
+ tl.info 'this message is console only', 2, :console
116
+ tl.info 'this message is console only', :console, 2
117
+ ```
83
118
 
84
- # enable console output
85
- tl.enable(:console)
86
- tl.info 'this message is logfile and console'
119
+ ### 3.5. disable console output
87
120
 
88
- # disable logfile output
89
- tl.disable(:logfile)
90
- tl.info 'this message is consle only'
121
+ ```ruby
122
+ tl.disable(:console)
123
+ tl.info 'this message is logfile only'
124
+ ```
91
125
 
92
- # enable logfile output
93
- tl.enable(:logfile)
94
- tl.info 'this message is logfile and console'
126
+ ### 3.6. enable console output
95
127
 
96
- # disabe in block
97
- tl.disable(:console) do
98
- tl.info 'this message is logfile only'
99
- end
100
- tl.info 'this message is logfile and console'
128
+ ```ruby
129
+ tl.enable(:console)
130
+ tl.info 'this message is logfile and console'
131
+ ```
132
+
133
+ ### 3.7. disable logfile output
101
134
 
102
- # and others like Logger's
103
- tl.debug? # => true
104
- tl.info? # => true
105
- tl.warn? # => true
106
- tl.error? # => true
107
- tl.fatal? # => true
135
+ ```ruby
136
+ tl.disable(:logfile)
137
+ tl.info 'this message is consle only'
138
+ ```
139
+
140
+ ### 3.8. enable logfile output
141
+
142
+ ```ruby
143
+ tl.enable(:logfile)
144
+ tl.info 'this message is logfile and console'
145
+ ```
146
+
147
+ ### 3.9. disable in block
108
148
 
109
- tl.level # => 0
110
- tl.level = Logger::INFO
111
- tl.debug 'this message is not logging'
149
+ ```ruby
150
+ tl.disable(:console) do
151
+ tl.info 'this message is logfile only'
152
+ end
153
+ tl.info 'this message is logfile and console'
154
+ ```
112
155
 
113
- tl.formatter # => nil or Proc
114
- tl.formatter =
115
- proc { |severity, datetime, progname, message| "#{severity}:#{message}" }
156
+ ### 3.10. and others like Logger's
116
157
 
117
- tl.datetime_format # => nil or Proc
118
- tl.datetime_format = '%Y%m%d %H%M%S '
158
+ ```ruby
159
+ # log_level
160
+ tl.debug? # => true
161
+ tl.info? # => true
162
+ tl.warn? # => true
163
+ tl.error? # => true
164
+ tl.fatal? # => true
165
+
166
+ tl.level # => 0
167
+ tl.level = Logger::INFO
168
+ tl.debug 'this message is not logging'
169
+
170
+ # formatter
171
+ tl.formatter # => nil or Proc
172
+ tl.formatter =
173
+ proc { |severity, datetime, progname, message| "#{severity}:#{message}" }
174
+
175
+ # datetime_formatter
176
+ tl.datetime_format # => nil or Proc
177
+ tl.datetime_format = '%Y%m%d %H%M%S '
119
178
  ```
120
179
 
180
+ ---
121
181
 
122
- ## include or extend TeeLogger for casual use
182
+ ## 4. include or extend TeeLogger
123
183
 
124
- > TODO: the log file will be in default of `./tee_logger.log`
184
+ > the log file will be in default of `./tee_logger.log`
185
+
186
+ ### 4.1. for casual use
125
187
 
126
188
  ```ruby
127
- require 'tee_logger'
189
+ require 'tee_logger'
190
+
191
+ class YourAwesomeClass
192
+ # define method #logger for your class.
193
+ # log file will be in default of `./tee_logger.log`
194
+ include TeeLogger
195
+
196
+ def awesome_method
197
+ logger.info 'this is message is logging and disp console'
198
+ end
199
+ end
128
200
 
129
- class YourAwesomeClass
130
- include TeeLogger
201
+ module YourAwesomeModule
202
+ # define singleton method .logger for your module.
203
+ # log file will be in default of `./tee_logger.log`
204
+ extend TeeLogger
131
205
 
132
- def awesome_method
133
- # do somthing
134
- logger.info 'this is message is logging and disp console'
135
- end
206
+ def self.awesome_method
207
+ logger.info 'this is message is logging and disp console'
136
208
  end
209
+ end
210
+ ```
211
+
212
+ ### 4.2. configuration logfile name, progname, level, formatter, and datetime_format
213
+
214
+ ```ruby
215
+ require 'tee_logger'
216
+
217
+ # Before extend or include the module, allow the configuration.
218
+ # TeeLogger.logdev = 'log1.log'
219
+ TeeLogger.configure do |config|
220
+ config.logdev = 'log1.log'
221
+ config.level = Logger::Severity::INFO
222
+ config.progname = 'AwesomeApp'
223
+ config.formatter = proc { |s, t, p, m| "#{s} #{t} #{p} #{m}\n" }
224
+ # config.datetime_format = '%Y%m%d %H%M%S '
225
+ end
226
+
227
+ class YourAwesomeClass
228
+ include TeeLogger
229
+
230
+ def awesome_method
231
+ logger.info 'this message is output `log1.log`'
232
+ end
233
+ end
234
+
235
+ # reset configuration
236
+ TeeLogger.configuration_reset
137
237
 
138
- module YourAwesomeModule
139
- extend TeeLogger
238
+ # NOTE: sorry, `TeeLogger.logev` is deprecate.
239
+ TeeLogger.logdev = 'log2.log'
240
+ module YourAwesomeModule
241
+ extend TeeLogger
140
242
 
141
- def self.awesome_method
142
- # do somthing
143
- logger.info 'this is message is logging and disp console'
144
- end
243
+ def self.awesome_method
244
+ logger.info 'this message is output `log2.log`'
145
245
  end
246
+ end
247
+
146
248
  ```
147
249
 
250
+ ---
148
251
 
149
- ## Development
252
+ ## 5. Development
150
253
 
151
254
  After checking out the repo, run `bundle install` to install dependencies.
152
255
  Then, run `rake rspec` to run the tests.
@@ -160,36 +263,37 @@ which will create a git tag for the version,
160
263
  push git commits and tags,
161
264
  and push the `.gem` file to [rubygems.org](https://rubygems.org).
162
265
 
266
+ ---
163
267
 
164
- ## Contributing
268
+ ## 6. Contributing
165
269
 
166
270
  Bug reports and pull requests are welcome on GitHub
167
271
  at https://github.com/k-ta-yamada/tee_logger.
168
272
  This project is intended to be a safe,
169
273
  welcoming space for collaboration,
170
274
  and contributors are expected to adhere to the
171
- [Contributor Covenant](http://contributor-covenant.org) code of conduct.
275
+ [Contributor Covenant](https://contributor-covenant.org) code of conduct.
172
276
 
277
+ ---
173
278
 
174
- ## License
279
+ ## 7. License
175
280
 
176
281
  The gem is available as open source under the terms of the
177
- [MIT License](http://opensource.org/licenses/MIT).
178
-
282
+ [MIT License](https://opensource.org/licenses/MIT).
179
283
 
180
- [gem_version]: http://badge.fury.io/rb/tee_logger
181
- [gem_version-svg]: https://badge.fury.io/rb/tee_logger.svg
284
+ ---
182
285
 
183
- [travis]: https://travis-ci.org/k-ta-yamada/tee_logger
184
- [travis-svg]: https://travis-ci.org/k-ta-yamada/tee_logger.svg
286
+ eof
185
287
 
288
+ [gem_version]: https://badge.fury.io/rb/tee_logger
289
+ [gem_version-svg]: https://badge.fury.io/rb/tee_logger.svg
290
+ [travis]: https://app.travis-ci.com/k-ta-yamada/tee_logger
291
+ [travis-svg]: https://app.travis-ci.com/k-ta-yamada/tee_logger.svg?branch=master
186
292
  [codeclimate]: https://codeclimate.com/github/k-ta-yamada/tee_logger
187
293
  [codeclimate-svg]: https://codeclimate.com/github/k-ta-yamada/tee_logger/badges/gpa.svg
188
-
189
294
  [codeclimate_cov]: https://codeclimate.com/github/k-ta-yamada/tee_logger/coverage
190
295
  [codeclimate_cov-svg]: https://codeclimate.com/github/k-ta-yamada/tee_logger/badges/coverage.svg
191
-
192
- [inch-ci]: http://inch-ci.org/github/k-ta-yamada/tee_logger
193
- [inch-ci-svg]: http://inch-ci.org/github/k-ta-yamada/tee_logger.svg?branch=master
194
-
296
+ [inch-ci]: https://inch-ci.org/github/k-ta-yamada/tee_logger
297
+ [inch-ci-svg]: https://inch-ci.org/github/k-ta-yamada/tee_logger.svg?branch=master
298
+ [downloads-svg]: https://ruby-gem-downloads-badge.herokuapp.com/tee_logger?type=total&total_label=&color=brightgreen
195
299
  [tee_logger-changelog]: https://github.com/k-ta-yamada/tee_logger/blob/master/CHANGELOG.md
@@ -0,0 +1,69 @@
1
+ # namespace
2
+ module TeeLogger
3
+ # configuration
4
+ module Configration
5
+ extend Gem::Deprecate
6
+
7
+ # @attr logdev [String, File]
8
+ # @attr level [Logger::Severity, Integer]
9
+ # @attr progname [String, Symbol]
10
+ # @attr formatter [Logger::Formatter, Proc]
11
+ # @attr datetime_format [String]
12
+ Configration = Struct.new(:logdev,
13
+ :level,
14
+ :progname,
15
+ :formatter,
16
+ :datetime_format)
17
+
18
+ # Yields the global configuration to a block.
19
+ # @yield [Configuration] global configuration
20
+ def configure
21
+ yield configuration if block_given?
22
+ end
23
+
24
+ # reset configuration
25
+ def configuration_reset
26
+ @configuration = nil
27
+ end
28
+
29
+ # set TeeLogger::Configuration::Configration's member :logdev.
30
+ # extend or include TeeLogger then, :logdev is default argument
31
+ # for Logger.new(logdev).
32
+ # @param logdev [String, File]
33
+ def logdev=(logdev)
34
+ configuration.logdev = logdev
35
+ end
36
+ deprecate :logdev=, 'TeeLogger.configure', 2016, 1
37
+
38
+ # @return [String, File] `configuration.logdev` or `DEFAULT_FILE`.
39
+ def logdev
40
+ configuration.logdev || DEFAULT_FILE
41
+ end
42
+
43
+ # @return `configuration.level`
44
+ def level
45
+ configuration.level
46
+ end
47
+
48
+ # @return `configuration.progname`
49
+ def progname
50
+ configuration.progname
51
+ end
52
+
53
+ # @return `configuration.formatter`
54
+ def formatter
55
+ configuration.formatter
56
+ end
57
+
58
+ # @return `configuration.datetime_format`
59
+ def datetime_format
60
+ configuration.datetime_format
61
+ end
62
+
63
+ private
64
+
65
+ def configuration
66
+ @configuration ||= Configration.new
67
+ end
68
+ end
69
+ end
@@ -1,23 +1,27 @@
1
1
  # namespace
2
2
  module TeeLogger
3
3
  # no param of filename, set this filename
4
- DEFAULT_FILE = './tee_logger.log'
4
+ DEFAULT_FILE = './tee_logger.log'.freeze
5
5
 
6
- # Implements targets
7
- LOGGING_METHODS = [:debug, :info, :warn, :error, :fatal]
6
+ # configured attributes
7
+ CONFIGURED_ATTRIBUTES =
8
+ [:level, :progname, :formatter, :datetime_format].freeze
9
+
10
+ # implements targets
11
+ LOGGING_METHODS = [:debug, :info, :warn, :error, :fatal].freeze
8
12
 
9
13
  # defined logdev names
10
- LOGDEV_NAMES = [:console, :logfile]
14
+ LOGDEV_NAMES = [:console, :logfile].freeze
11
15
 
12
16
  # defined paired of logdev name
13
- LOGDEV_REVERSE = { console: :logfile, logfile: :console }
17
+ LOGDEV_REVERSE = { console: :logfile, logfile: :console }.freeze
14
18
 
15
19
  # empty format
16
20
  FORMATTER_FOR_DISABLING = proc { |_severity, _time, _progname, _msg| '' }
17
21
 
18
22
  # using TeeLogger::Utils.extract_options
19
- # @param logdev_name [Symbol]
20
- # @param indent_level [Fixnum]
23
+ # @attr logdev_name [Symbol]
24
+ # @attr indent_level [Fixnum]
21
25
  ParsedOption = Struct.new(:logdev_name, :indent_level)
22
26
 
23
27
  # LOGDEV_NAMES not included error
@@ -37,17 +37,19 @@ module TeeLogger
37
37
  end
38
38
 
39
39
  include Utils
40
- attr_reader :level, :progname, :formatter, :datetime_format
40
+ # attr_reader :level, :progname, :formatter, :datetime_format
41
+ attr_reader(*CONFIGURED_ATTRIBUTES)
41
42
 
42
43
  # @param logdev [String]
43
44
  # @param shift_age [Integer]
44
45
  # @param shift_size [Integer]
45
46
  # @see Logger#initialize
46
- def initialize(logdev = DEFAULT_FILE, shift_age = 0, shift_size = 1_048_576)
47
+ def initialize(logdev = nil, shift_age = 0, shift_size = 1_048_576)
47
48
  @console = Logger.new($stdout)
48
- @logfile = Logger.new(logdev, shift_age, shift_size)
49
+ @logfile = Logger.new(logdev || TeeLogger.logdev, shift_age, shift_size)
49
50
 
50
51
  @level, @progname, @formatter, @datetime_format = nil
52
+ configuration
51
53
  end
52
54
 
53
55
  define_logging_methods :debug
@@ -66,8 +68,8 @@ module TeeLogger
66
68
  def level=(level)
67
69
  @console.level = @logfile.level = @level = level
68
70
  end
69
- alias_method :sev_threshold, :level
70
- alias_method :sev_threshold=, :level=
71
+ alias sev_threshold level
72
+ alias sev_threshold= level=
71
73
 
72
74
  # @param name [String, Symbol]
73
75
  def progname=(name = nil)
@@ -79,11 +81,11 @@ module TeeLogger
79
81
  @console.formatter = @logfile.formatter = @formatter = formatter
80
82
  end
81
83
 
82
- # @param formatter
83
- def datetime_format=(format)
84
+ # @param datetime_format
85
+ def datetime_format=(datetime_format)
84
86
  @console.datetime_format =
85
87
  @logfile.datetime_format =
86
- @datetime_format = format
88
+ @datetime_format = datetime_format
87
89
  end
88
90
 
89
91
  # @param logdev_name [String, Symbol]
@@ -107,6 +109,13 @@ module TeeLogger
107
109
 
108
110
  private
109
111
 
112
+ def configuration
113
+ CONFIGURED_ATTRIBUTES.each do |method_name|
114
+ value = TeeLogger.send(method_name)
115
+ send("#{method_name}=", value) unless value.nil?
116
+ end
117
+ end
118
+
110
119
  def logging(name, progname, logdev_name = nil, &block)
111
120
  if logdev_name
112
121
  disable(logdev_name) { logging(name, progname, &block) }
@@ -2,15 +2,13 @@
2
2
  module TeeLogger
3
3
  # util
4
4
  module Utils
5
- # module_function
6
-
7
5
  # @param options [Array]
8
6
  # @return [ParsedOption]
9
7
  def extract_options(options)
10
8
  options.each_with_object(ParsedOption.new(nil, 0)) do |val, obj|
11
9
  case val
12
10
  when Symbol then obj.logdev_name = name_reverse(val)
13
- when Fixnum then obj.indent_level = val
11
+ when Integer then obj.indent_level = val
14
12
  else incorrect_option_error(val)
15
13
  end
16
14
  end
@@ -1,5 +1,5 @@
1
1
  # namespace
2
2
  module TeeLogger
3
3
  # version number
4
- VERSION = '3.2.0'
4
+ VERSION = '3.2.4'.freeze
5
5
  end
data/lib/tee_logger.rb CHANGED
@@ -1,43 +1,31 @@
1
+ require 'logger'
1
2
  require 'tee_logger/version'
2
3
  require 'tee_logger/constants'
4
+ require 'tee_logger/configuration'
3
5
  require 'tee_logger/utils'
4
6
  require 'tee_logger/tee_logger_base'
5
- require 'logger'
6
7
 
7
8
  # namespace
8
9
  module TeeLogger
10
+ extend Configration
11
+
9
12
  # shortcut for TeeLogger::TeeLoggerBase.new
10
13
  # @param logdev [String]
11
14
  # @param shift_age [Integer]
12
15
  # @param shift_size [Integer]
13
16
  # @return [TeeLogger::TeeLoggerBase]
14
17
  # @see TeeLoggerBase
15
- def self.new(logdev = DEFAULT_FILE, shift_age = 0, shift_size = 1_048_576)
18
+ def self.new(logdev = nil, shift_age = 0, shift_size = 1_048_576)
16
19
  TeeLoggerBase.new(logdev, shift_age, shift_size)
17
20
  end
18
21
 
19
- @logdev = nil
20
-
21
- # @return [String, File] instance variable @logdev.
22
- def self.logdev
23
- @logdev
24
- end
25
-
26
- # set TeeLogger's class instance variable @logdev.
27
- # extend or include TeeLogger then, @logdev is default argument
28
- # for Logger.new(logdev).
29
- # @param logdev [String, File]
30
- def self.logdev=(logdev)
31
- @logdev = logdev
32
- end
33
-
34
22
  # define singleton method .logger for your module.
35
23
  # and TeeLogger.progname is your module name.
36
24
  def self.extended(mod)
37
25
  mod.define_singleton_method(:logger) do
38
26
  return @logger if @logger
39
- @logger = TeeLoggerBase.new(TeeLogger.logdev || DEFAULT_FILE)
40
- @logger.progname = mod
27
+ @logger = TeeLogger.new
28
+ @logger.progname = TeeLogger.progname || mod
41
29
  @logger
42
30
  end
43
31
  end
@@ -48,8 +36,8 @@ module TeeLogger
48
36
  klass.class_eval do
49
37
  define_method(:logger) do
50
38
  return @logger if @logger
51
- @logger = TeeLoggerBase.new(TeeLogger.logdev || DEFAULT_FILE)
52
- @logger.progname = klass.name
39
+ @logger = TeeLogger.new
40
+ @logger.progname = TeeLogger.progname || klass.name
53
41
  @logger
54
42
  end
55
43
  end
data/tee_logger.gemspec CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ['k-ta-yamada']
10
10
  spec.email = ['key.luvless@gmail.com']
11
11
 
12
- spec.required_ruby_version = '>= 2.0.0'
12
+ spec.required_ruby_version = '>= 2.6.0'
13
13
 
14
14
  spec.summary = 'logging to file and standard output.'
15
15
  # rubocop:disable Metrics/LineLength
@@ -26,10 +26,16 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ['lib']
28
28
 
29
- spec.add_development_dependency 'bundler', '~> 1.10'
30
- spec.add_development_dependency 'rake', '~> 10.0'
29
+ spec.add_development_dependency 'bundler'
30
+ spec.add_development_dependency 'rake'
31
31
  spec.add_development_dependency 'rspec'
32
32
  spec.add_development_dependency 'fuubar'
33
+ # Workaround for cc-test-reporter with SimpleCov 0.18.
34
+ # Stop upgrading SimpleCov until the following issue will be resolved.
35
+ # https://github.com/codeclimate/test-reporter/issues/418
36
+ # https://github.com/codeclimate/test-reporter/issues/413
37
+ spec.add_development_dependency 'simplecov', '= 0.17'
38
+ spec.add_development_dependency 'simplecov-console'
33
39
 
34
40
  spec.add_development_dependency 'pry'
35
41
  spec.add_development_dependency 'pry-doc'
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tee_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - k-ta-yamada
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-27 00:00:00.000000000 Z
11
+ date: 2021-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.10'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.10'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,34 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: '0.17'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: '0.17'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov-console
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: pry
71
99
  requirement: !ruby/object:Gem::Requirement
@@ -183,6 +211,7 @@ files:
183
211
  - README.md
184
212
  - Rakefile
185
213
  - lib/tee_logger.rb
214
+ - lib/tee_logger/configuration.rb
186
215
  - lib/tee_logger/constants.rb
187
216
  - lib/tee_logger/tee_logger_base.rb
188
217
  - lib/tee_logger/utils.rb
@@ -192,7 +221,7 @@ homepage: https://github.com/k-ta-yamada/tee_logger
192
221
  licenses:
193
222
  - MIT
194
223
  metadata: {}
195
- post_install_message:
224
+ post_install_message:
196
225
  rdoc_options: []
197
226
  require_paths:
198
227
  - lib
@@ -200,17 +229,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
200
229
  requirements:
201
230
  - - ">="
202
231
  - !ruby/object:Gem::Version
203
- version: 2.0.0
232
+ version: 2.6.0
204
233
  required_rubygems_version: !ruby/object:Gem::Requirement
205
234
  requirements:
206
235
  - - ">="
207
236
  - !ruby/object:Gem::Version
208
237
  version: '0'
209
238
  requirements: []
210
- rubyforge_project:
211
- rubygems_version: 2.4.5.1
212
- signing_key:
239
+ rubygems_version: 3.2.3
240
+ signing_key:
213
241
  specification_version: 4
214
242
  summary: logging to file and standard output.
215
243
  test_files: []
216
- has_rdoc: