tee_logger 3.1.1 → 3.2.3

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: 874f1b444b9aabcee203bb8353f3aa9dad7e949c
4
- data.tar.gz: ca390ff17b91be912c99777dd02e67d27289ad5f
2
+ SHA256:
3
+ metadata.gz: 7c90876bb1b5e1f7019982d320762c5ac4e133e8e65758d806490bb6535ddd65
4
+ data.tar.gz: 84d59644444224663ac93be6f2514b90b69c97cb35cedccca07f422f8d202526
5
5
  SHA512:
6
- metadata.gz: 39ff82dd2e8177e79941cf0c01f42fd9883e07836ae76aa884ff61830047f0354ace54c384019849eb130d13560b0b4ee3e2a5ff337d1762f45ef8e53378982d
7
- data.tar.gz: a2e62ecde98d03f0471bcf28ec22ab849ed0ad994eaa6d8292c80bd5b0106338f2b816f74746f887cf579a26d794f3e96522067bb74a7ab14f25aa8f223e1f1b
6
+ metadata.gz: 3cb6c4d2e96e213cc733ee916b55bab201817bdd6eff55d584b56334eb064c4633fbcee71a8a813c1dc35c0dc33eda8a5910e3798b5c99449278cf640868a4f6
7
+ data.tar.gz: c6406041d667a06fabb06598916129fda741e21104e58834425a6f023c245002e218d8f6638eff65e9bd2a7b7e31b0dbda02920c398787315502c4027bd47e3c
data/.gitignore CHANGED
@@ -55,3 +55,6 @@ $RECYCLE.BIN/
55
55
 
56
56
  # Windows shortcuts
57
57
  *.lnk
58
+
59
+ *tags*
60
+ *.log
@@ -0,0 +1,4 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ Style/AsciiComments:
4
+ Enabled: false
@@ -0,0 +1,2 @@
1
+ Style/FrozenStringLiteralComment:
2
+ Enabled: false
@@ -1,11 +1,19 @@
1
1
  language: ruby
2
+
3
+ cache: bundler
4
+
2
5
  rvm:
3
- - ruby-head
4
- - 2.2.3
5
- - 2.2.2
6
- - 2.1.5
7
- - 2.0.0
8
- before_install: gem install bundler -v 1.10.4
9
- notifications:
10
- slack:
11
- 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
+ - 2.5
10
+
11
+ before_install:
12
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
13
+ - chmod +x ./cc-test-reporter
14
+
15
+ before_script:
16
+ - ./cc-test-reporter before-build
17
+
18
+ after_script:
19
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
@@ -1,77 +1,125 @@
1
- # v3.1.1
1
+ # CHANGELOG.md
2
+
3
+ ## v3.2.3
4
+
5
+ 2020-01-03 JST
6
+
7
+ - Add support for Ruby 3.0
8
+
9
+ ## v3.2.2
10
+
11
+ - [issue #17](https://github.com/k-ta-yamada/tee_logger/issues/17)
12
+ default settings for extend and include
13
+
14
+ ## v3.2.1
15
+
16
+ - [issue #18](https://github.com/k-ta-yamada/tee_logger/issues/18)
17
+ use initial value `DEFAULT_FILE`, it's change TeeLogger.logdev
18
+
19
+ ## v3.2.0
20
+
21
+ - [issue #15](https://github.com/k-ta-yamada/tee_logger/issues/15)
22
+ Before extend or include the module, allow the setting of logdev
23
+
24
+ ## v3.1.2
25
+
26
+ - add .gemspec required_ruby_version = '>= 2.0.0'
27
+
28
+ ## v3.1.1
29
+
2
30
  - [[clean] module split](https://github.com/k-ta-yamada/tee_logger/pull/14)
3
31
 
4
- # v3.1.0
32
+ ## v3.1.0
33
+
5
34
  - [issue #12](https://github.com/k-ta-yamada/tee_logger/issues/12)
6
35
  Include and Extend support
7
36
 
8
- # v3.0.3
37
+ ## v3.0.3
38
+
9
39
  - shared_examples_for_tee_logger_spec.rb [ae1e481](https://github.com/k-ta-yamada/tee_logger/commit/ae1e481)
10
40
  - new constant for disabling formatter [478eccb](https://github.com/k-ta-yamada/tee_logger/commit/478eccb)
11
41
 
12
- # v3.0.2
42
+ ## v3.0.2
43
+
13
44
  - refactoring
14
45
  - CONSTANTS move to ./lib/constants.rb
15
46
 
16
- # v3.0.1
47
+ ## v3.0.1
48
+
17
49
  - refactoring for [issue #9](https://github.com/k-ta-yamada/tee_logger/issues/9)
18
50
 
19
- # v3.0.0
51
+ ## v3.0.0
52
+
20
53
  - [issue #4](https://github.com/k-ta-yamada/tee_logger/issues/4)
21
54
  logging method's parametrer disabling_target change to enabling_targe
22
55
  - [issue #5](https://github.com/k-ta-yamada/tee_logger/issues/5)
23
56
  log message indentation
24
57
 
25
- # v2.7.0
58
+ ## v2.7.0
59
+
26
60
  - add datetime_format, datetime_format=
27
61
 
28
- # v2.6.0
62
+ ## v2.6.0
63
+
29
64
  - disabling option add to logging_methods
30
65
 
31
- # v2.5.0
66
+ ## v2.5.0
67
+
32
68
  - level, progname and formatter were changed to instance variable
33
69
  - refactoring: disabling and enabling
34
70
  - rm ./lib/tee_logger/constants.rb. Constants move to ./lib/tee_logger.rb
35
71
 
36
- # v2.4.1
72
+ ## v2.4.1
73
+
37
74
  - update README.md
38
75
  - and YARD comment
39
76
 
40
- # v2.4.0
77
+ ## v2.4.0
78
+
41
79
  - TeeLogger#disable is allow block given
42
80
 
43
- # v2.3.1
81
+ ## v2.3.1
82
+
44
83
  - refactoring TeeLogger#disable
45
84
 
46
- # v2.3.0
85
+ ## v2.3.0
86
+
47
87
  - remove TeeLogger.attr_reader
48
88
  - and rename instance variable: @logger => @logfile
49
89
  - implementation `#level` and `level=`
50
90
  - implementation `#formatter` and `formatter=`
51
91
 
52
- # v2.2.0
92
+ ## v2.2.0
93
+
53
94
  - disabling and enabling
54
95
 
55
- # v2.1.1
96
+ ## v2.1.1
97
+
56
98
  - refactoring of test case
57
99
  - Introduced capture_stdout
58
100
  - Introduced FakeFS
59
101
  - Change logdev of Console for Logger from STDOUT to $ stdout
60
102
 
61
- # v2.1.0
103
+ ## v2.1.0
104
+
62
105
  - Integrate TeeLogger::Base class to TeeLogger::TeeLogger class
63
106
 
64
- # v2.0.2
107
+ ## v2.0.2
108
+
65
109
  - bugfix
66
110
 
67
- # v2.0.1
111
+ ## v2.0.1
112
+
68
113
  - bugfix
69
114
 
70
- # v2.0.0
115
+ ## v2.0.0
116
+
71
117
  - Change to Class from Module
72
118
 
73
- # v1.1.0
119
+ ## v1.1.0
120
+
74
121
  - bugfix
75
122
 
76
- # v1.0.0
123
+ ## v1.0.0
124
+
77
125
  - 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,15 +1,16 @@
1
- [![Gem Version](https://badge.fury.io/rb/tee_logger.svg)](http://badge.fury.io/rb/tee_logger)
2
- [![Build Status](https://travis-ci.org/k-ta-yamada/tee_logger.svg)](https://travis-ci.org/k-ta-yamada/tee_logger)
3
- [![Code Climate](https://codeclimate.com/github/k-ta-yamada/tee_logger/badges/gpa.svg)](https://codeclimate.com/github/k-ta-yamada/tee_logger)
4
- [![Test Coverage](https://codeclimate.com/github/k-ta-yamada/tee_logger/badges/coverage.svg)](https://codeclimate.com/github/k-ta-yamada/tee_logger/coverage)
5
- [![Inline docs](http://inch-ci.org/github/k-ta-yamada/tee_logger.svg?branch=master)](http://inch-ci.org/github/k-ta-yamada/tee_logger)
1
+ [![Gem Version][gem_version-svg]][gem_version]
2
+ [![Build Status][travis-svg]][travis]
3
+ [![Downloads][downloads-svg]][gem_version]
4
+ [![Inline docs][inch-ci-svg]][inch-ci]
5
+ [![Code Climate][codeclimate-svg]][codeclimate]
6
+ [![Test Coverage][codeclimate_cov-svg]][codeclimate_cov]
6
7
 
7
8
  > Sorry. In from version 2 to version 3, changed usage.
8
- > see also [CHANGELOG.md](https://github.com/k-ta-yamada/tee_logger/blob/master/CHANGELOG.md).
9
+ > see also [CHANGELOG.md][tee_logger-changelog].
9
10
 
10
11
  - [Rubygems.org](https://rubygems.org/gems/tee_logger)
11
12
  - [GitHub](https://github.com/k-ta-yamada/tee_logger)
12
- - [RubyDoc.info](http://www.rubydoc.info/gems/tee_logger)
13
+ - [RubyDoc.info](https://www.rubydoc.info/gems/tee_logger)
13
14
 
14
15
  # TeeLogger
15
16
 
@@ -47,6 +48,7 @@ $ gem install tee_logger
47
48
 
48
49
  ## Usage
49
50
 
51
+ ### let's logging
50
52
  ```ruby
51
53
  require 'tee_logger'
52
54
 
@@ -57,49 +59,67 @@ require 'tee_logger'
57
59
  # shift_size = 1_048_576
58
60
  tl = TeeLogger.new
59
61
 
60
- # let's logging
61
62
  tl.debug 'hello'
62
63
  tl.debug(:progname) { 'hello world' }
63
64
  tl.progname = 'App'
64
65
  tl.debug 'hello tee_logger'
66
+ ```
65
67
 
66
- # enable only when specified
68
+ ### enable only when specified
69
+ ```ruby
67
70
  tl.info 'this message is console and logfile'
68
71
  tl.info 'this message is console only', :console
69
72
  tl.info 'this message is logfile only', :logfile
73
+ ```
70
74
 
71
- # log meassage indent
75
+ ### log meassage indent
76
+ ```ruby
72
77
  tl.info 'hello' # => 'hello'
73
78
  tl.info 'hello', 0 # => 'hello'
74
79
  tl.info 'hello', 2 # => ' hello'
80
+ ```
75
81
 
76
- # enabling and indent
82
+ ### enabling and indent
83
+ ```ruby
77
84
  tl.info 'this message is console only', 2, :console
78
85
  tl.info 'this message is console only', :console, 2
86
+ ```
79
87
 
80
- # disable console output
88
+ ### disable console output
89
+ ```ruby
81
90
  tl.disable(:console)
82
91
  tl.info 'this message is logfile only'
92
+ ```
83
93
 
84
- # enable console output
94
+ ### enable console output
95
+ ```ruby
85
96
  tl.enable(:console)
86
97
  tl.info 'this message is logfile and console'
98
+ ```
87
99
 
88
- # disable logfile output
100
+ ### disable logfile output
101
+ ```ruby
89
102
  tl.disable(:logfile)
90
103
  tl.info 'this message is consle only'
104
+ ```
91
105
 
92
- # enable logfile output
106
+ ### enable logfile output
107
+ ```ruby
93
108
  tl.enable(:logfile)
94
109
  tl.info 'this message is logfile and console'
110
+ ```
95
111
 
96
- # disabe in block
112
+ ### disable in block
113
+ ```ruby
97
114
  tl.disable(:console) do
98
115
  tl.info 'this message is logfile only'
99
116
  end
100
117
  tl.info 'this message is logfile and console'
118
+ ```
101
119
 
102
- # and others like Logger's
120
+ ### and others like Logger's
121
+ ```ruby
122
+ # log_level
103
123
  tl.debug? # => true
104
124
  tl.info? # => true
105
125
  tl.warn? # => true
@@ -110,40 +130,83 @@ tl.level # => 0
110
130
  tl.level = Logger::INFO
111
131
  tl.debug 'this message is not logging'
112
132
 
133
+ # formatter
113
134
  tl.formatter # => nil or Proc
114
- tl.formatter = proc { |severity, datetime, progname, message| "#{severity}:#{message}" }
135
+ tl.formatter =
136
+ proc { |severity, datetime, progname, message| "#{severity}:#{message}" }
115
137
 
138
+ # datetime_formatter
116
139
  tl.datetime_format # => nil or Proc
117
140
  tl.datetime_format = '%Y%m%d %H%M%S '
118
141
  ```
119
142
 
120
143
 
121
- ## include or extend TeeLogger for casual use
144
+ ## include or extend TeeLogger
122
145
 
123
- > TODO: the log file will be in default of `./tee_logger.log`
146
+ > the log file will be in default of `./tee_logger.log`
124
147
 
148
+ ### for casual use
125
149
  ```ruby
126
150
  require 'tee_logger'
127
151
 
128
152
  class YourAwesomeClass
153
+ # define method #logger for your class.
154
+ # log file will be in default of `./tee_logger.log`
129
155
  include TeeLogger
130
156
 
131
157
  def awesome_method
132
- # do somthing
133
158
  logger.info 'this is message is logging and disp console'
134
159
  end
135
160
  end
136
161
 
137
162
  module YourAwesomeModule
163
+ # define singleton method .logger for your module.
164
+ # log file will be in default of `./tee_logger.log`
138
165
  extend TeeLogger
139
166
 
140
167
  def self.awesome_method
141
- # do somthing
142
168
  logger.info 'this is message is logging and disp console'
143
169
  end
144
170
  end
145
171
  ```
146
172
 
173
+ ### configuration logfile name, progname, level, formatter, and datetime_format.
174
+ ```ruby
175
+ require 'tee_logger'
176
+
177
+ # Before extend or include the module, allow the configuration.
178
+ # TeeLogger.logdev = 'log1.log'
179
+ TeeLogger.configure do |config|
180
+ config.logdev = 'log1.log'
181
+ config.level = Logger::Severity::INFO
182
+ config.progname = 'AwesomeApp'
183
+ config.formatter = proc { |s, t, p, m| "#{s} #{t} #{p} #{m}\n" }
184
+ # config.datetime_format = '%Y%m%d %H%M%S '
185
+ end
186
+
187
+ class YourAwesomeClass
188
+ include TeeLogger
189
+
190
+ def awesome_method
191
+ logger.info 'this message is output `log1.log`'
192
+ end
193
+ end
194
+
195
+ # reset configuration
196
+ TeeLogger.configuration_reset
197
+
198
+ # NOTE: sorry, `TeeLogger.logev` is deprecate.
199
+ TeeLogger.logdev = 'log2.log'
200
+ module YourAwesomeModule
201
+ extend TeeLogger
202
+
203
+ def self.awesome_method
204
+ logger.info 'this message is output `log2.log`'
205
+ end
206
+ end
207
+
208
+ ```
209
+
147
210
 
148
211
  ## Development
149
212
 
@@ -162,12 +225,29 @@ and push the `.gem` file to [rubygems.org](https://rubygems.org).
162
225
 
163
226
  ## Contributing
164
227
 
165
- Bug reports and pull requests are welcome on GitHub at https://github.com/k-ta-yamada/tee_logger.
228
+ Bug reports and pull requests are welcome on GitHub
229
+ at https://github.com/k-ta-yamada/tee_logger.
166
230
  This project is intended to be a safe,
167
231
  welcoming space for collaboration,
168
- and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
232
+ and contributors are expected to adhere to the
233
+ [Contributor Covenant](https://contributor-covenant.org) code of conduct.
169
234
 
170
235
 
171
236
  ## License
172
237
 
173
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
238
+ The gem is available as open source under the terms of the
239
+ [MIT License](https://opensource.org/licenses/MIT).
240
+
241
+
242
+ [gem_version]: https://badge.fury.io/rb/tee_logger
243
+ [gem_version-svg]: https://badge.fury.io/rb/tee_logger.svg
244
+ [travis]: https://travis-ci.org/k-ta-yamada/tee_logger
245
+ [travis-svg]: https://travis-ci.org/k-ta-yamada/tee_logger.svg
246
+ [codeclimate]: https://codeclimate.com/github/k-ta-yamada/tee_logger
247
+ [codeclimate-svg]: https://codeclimate.com/github/k-ta-yamada/tee_logger/badges/gpa.svg
248
+ [codeclimate_cov]: https://codeclimate.com/github/k-ta-yamada/tee_logger/coverage
249
+ [codeclimate_cov-svg]: https://codeclimate.com/github/k-ta-yamada/tee_logger/badges/coverage.svg
250
+ [inch-ci]: https://inch-ci.org/github/k-ta-yamada/tee_logger
251
+ [inch-ci-svg]: https://inch-ci.org/github/k-ta-yamada/tee_logger.svg?branch=master
252
+ [downloads-svg]: https://ruby-gem-downloads-badge.herokuapp.com/tee_logger?type=total&total_label=&color=brightgreen
253
+ [tee_logger-changelog]: https://github.com/k-ta-yamada/tee_logger/blob/master/CHANGELOG.md
@@ -1,45 +1,44 @@
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
9
- class << self
10
- # shortcut for TeeLogger::TeeLoggerBase.new
11
- # @param logdev [String]
12
- # @param shift_age [Integer]
13
- # @param shift_size [Integer]
14
- # @return [TeeLogger::TeeLoggerBase]
15
- # @see TeeLoggerBase
16
- def new(logdev = DEFAULT_FILE, shift_age = 0, shift_size = 1_048_576)
17
- TeeLoggerBase.new(logdev, shift_age, shift_size)
18
- end
10
+ extend Configration
19
11
 
20
- # define singleton method .logger for your module.
21
- # and TeeLogger.progname is your module name.
22
- def extended(mod)
23
- mod.class_eval do
24
- define_singleton_method(:logger) do |logdev = DEFAULT_FILE|
25
- return @logger if @logger
26
- @logger = TeeLoggerBase.new(logdev)
27
- @logger.progname = self
28
- @logger
29
- end
30
- end
12
+ # shortcut for TeeLogger::TeeLoggerBase.new
13
+ # @param logdev [String]
14
+ # @param shift_age [Integer]
15
+ # @param shift_size [Integer]
16
+ # @return [TeeLogger::TeeLoggerBase]
17
+ # @see TeeLoggerBase
18
+ def self.new(logdev = nil, shift_age = 0, shift_size = 1_048_576)
19
+ TeeLoggerBase.new(logdev, shift_age, shift_size)
20
+ end
21
+
22
+ # define singleton method .logger for your module.
23
+ # and TeeLogger.progname is your module name.
24
+ def self.extended(mod)
25
+ mod.define_singleton_method(:logger) do
26
+ return @logger if @logger
27
+ @logger = TeeLogger.new
28
+ @logger.progname = TeeLogger.progname || mod
29
+ @logger
31
30
  end
31
+ end
32
32
 
33
- # define instance method #logger for your class.
34
- # and TeeLogger.progname is your class name.
35
- def included(klass)
36
- klass.class_eval do
37
- define_method(:logger) do |logdev = DEFAULT_FILE|
38
- return @logger if @logger
39
- @logger = TeeLoggerBase.new(logdev)
40
- @logger.progname = self.class.name
41
- @logger
42
- end
33
+ # define instance method #logger for your class.
34
+ # and TeeLogger.progname is your class name.
35
+ def self.included(klass)
36
+ klass.class_eval do
37
+ define_method(:logger) do
38
+ return @logger if @logger
39
+ @logger = TeeLogger.new
40
+ @logger.progname = TeeLogger.progname || klass.name
41
+ @logger
43
42
  end
44
43
  end
45
44
  end
@@ -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,15 +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)
50
+
51
+ @level, @progname, @formatter, @datetime_format = nil
52
+ configuration
49
53
  end
50
54
 
51
55
  define_logging_methods :debug
@@ -64,8 +68,8 @@ module TeeLogger
64
68
  def level=(level)
65
69
  @console.level = @logfile.level = @level = level
66
70
  end
67
- alias_method :sev_threshold, :level
68
- alias_method :sev_threshold=, :level=
71
+ alias sev_threshold level
72
+ alias sev_threshold= level=
69
73
 
70
74
  # @param name [String, Symbol]
71
75
  def progname=(name = nil)
@@ -77,11 +81,11 @@ module TeeLogger
77
81
  @console.formatter = @logfile.formatter = @formatter = formatter
78
82
  end
79
83
 
80
- # @param formatter
81
- def datetime_format=(format)
84
+ # @param datetime_format
85
+ def datetime_format=(datetime_format)
82
86
  @console.datetime_format =
83
87
  @logfile.datetime_format =
84
- @datetime_format = format
88
+ @datetime_format = datetime_format
85
89
  end
86
90
 
87
91
  # @param logdev_name [String, Symbol]
@@ -105,6 +109,13 @@ module TeeLogger
105
109
 
106
110
  private
107
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
+
108
119
  def logging(name, progname, logdev_name = nil, &block)
109
120
  if logdev_name
110
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.1.1'
4
+ VERSION = '3.2.3'.freeze
5
5
  end
@@ -9,9 +9,12 @@ 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.5.0'
13
+
12
14
  spec.summary = 'logging to file and standard output.'
13
- spec.description =
14
- 'logging to file and standard output. require standard library only.'
15
+ # rubocop:disable Metrics/LineLength
16
+ spec.description = 'logging to file and standard output. require standard library only.'
17
+ # rubocop:enable Metrics/LineLength
15
18
 
16
19
  spec.homepage = 'https://github.com/k-ta-yamada/tee_logger'
17
20
  spec.license = 'MIT'
@@ -23,10 +26,12 @@ Gem::Specification.new do |spec|
23
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
27
  spec.require_paths = ['lib']
25
28
 
26
- spec.add_development_dependency 'bundler', '~> 1.10'
27
- spec.add_development_dependency 'rake', '~> 10.0'
29
+ spec.add_development_dependency 'bundler'
30
+ spec.add_development_dependency 'rake'
28
31
  spec.add_development_dependency 'rspec'
29
32
  spec.add_development_dependency 'fuubar'
33
+ spec.add_development_dependency 'simplecov'
34
+ spec.add_development_dependency 'simplecov-console'
30
35
 
31
36
  spec.add_development_dependency 'pry'
32
37
  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.1.1
4
+ version: 3.2.3
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-11-14 00:00:00.000000000 Z
11
+ date: 2021-01-03 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'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
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
@@ -173,6 +201,8 @@ extra_rdoc_files: []
173
201
  files:
174
202
  - ".gitignore"
175
203
  - ".rspec"
204
+ - ".rubocop.yml"
205
+ - ".rubocop_todo.yml"
176
206
  - ".travis.yml"
177
207
  - CHANGELOG.md
178
208
  - CODE_OF_CONDUCT.md
@@ -181,6 +211,7 @@ files:
181
211
  - README.md
182
212
  - Rakefile
183
213
  - lib/tee_logger.rb
214
+ - lib/tee_logger/configuration.rb
184
215
  - lib/tee_logger/constants.rb
185
216
  - lib/tee_logger/tee_logger_base.rb
186
217
  - lib/tee_logger/utils.rb
@@ -190,7 +221,7 @@ homepage: https://github.com/k-ta-yamada/tee_logger
190
221
  licenses:
191
222
  - MIT
192
223
  metadata: {}
193
- post_install_message:
224
+ post_install_message:
194
225
  rdoc_options: []
195
226
  require_paths:
196
227
  - lib
@@ -198,17 +229,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
198
229
  requirements:
199
230
  - - ">="
200
231
  - !ruby/object:Gem::Version
201
- version: '0'
232
+ version: 2.5.0
202
233
  required_rubygems_version: !ruby/object:Gem::Requirement
203
234
  requirements:
204
235
  - - ">="
205
236
  - !ruby/object:Gem::Version
206
237
  version: '0'
207
238
  requirements: []
208
- rubyforge_project:
209
- rubygems_version: 2.4.8
210
- signing_key:
239
+ rubygems_version: 3.2.3
240
+ signing_key:
211
241
  specification_version: 4
212
242
  summary: logging to file and standard output.
213
243
  test_files: []
214
- has_rdoc: