fluent-logger 0.9.1 → 0.11.0

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
2
  SHA256:
3
- metadata.gz: 460c4365ba58c7558db145e551b806ee8b2afb764454bfbba35e6f6290093317
4
- data.tar.gz: 5166f31570a03e934c217464a2d16706f82bd650581f43d83ee87c53e0952da8
3
+ metadata.gz: 3df64fcf7bf38ee6e2e66c816279927a1fe6d9622a711c52b84a739745422e7c
4
+ data.tar.gz: dff1768c55cb33e57d01991ae91cad43ba752339c6f4db34582c06f9b0dfbf6e
5
5
  SHA512:
6
- metadata.gz: 443b59cb242dc22e0d7ec6e711aefc2274452b5ea19d04af73db8250683f27da15b731af24b137213d91ea1f9c91873e7c5b85302c461c3f312b5d19e4bed2b7
7
- data.tar.gz: 3e1d99bb86d51e2e589621e73ad763de5928e19aa1a15d470fa7adc616a749674df69356b8bd431d07804a8f5925bcb8742c98a560e99f6ff35abf2f423c439e
6
+ metadata.gz: 82664c96b896ffbb37dc5d56292ef228db3c521a2c57736053b138ce75944524dad7d6c39616ede1a756d78859d51c2859ad45c2745c6cb78ee82b4de05d77d9
7
+ data.tar.gz: f9ccd114b9109fd2f3b06af62d03dc21c4d5e97c58555b9aa5dfc31ae491c13e67c605076c7cbedb03ab1a892d958d6f991d6a79197f8cea9e48201b5d19114b
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: 'github-actions'
4
+ directory: '/'
5
+ schedule:
6
+ interval: 'monthly'
@@ -1,30 +1,42 @@
1
1
  name: linux
2
2
  on:
3
- - push
4
- - pull_request
3
+ push:
4
+ branches: [master]
5
+ pull_request:
6
+ branches: [master]
7
+ schedule:
8
+ - cron: '0 0 1 * *'
5
9
  jobs:
10
+ ruby-versions:
11
+ uses: ruby/actions/.github/workflows/ruby_versions.yml@master
12
+ with:
13
+ engine: cruby
14
+ min_version: 3.2
6
15
  build:
16
+ needs: ruby-versions
7
17
  runs-on: ${{ matrix.os }}
8
18
  strategy:
9
19
  fail-fast: false
10
20
  matrix:
11
- ruby:
12
- - '2.7'
13
- - '3.0'
14
- - '3.1'
15
- - '3.2'
21
+ ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
22
+ exclude:
23
+ - ruby: head
16
24
  os:
17
25
  - ubuntu-latest
18
- name: Ruby ${{ matrix.ruby }} unit testing on ${{ matrix.os }}
26
+ gemfile:
27
+ - activesupport
28
+ - no-activesupport
29
+ env:
30
+ BUNDLE_GEMFILE: spec/gemfiles/${{ matrix.gemfile }}.gemfile
31
+ name: Ruby ${{ matrix.ruby }} unit testing on ${{ matrix.os }} (${{ matrix.gemfile }})
19
32
  steps:
20
- - uses: actions/checkout@v3
33
+ - uses: actions/checkout@v7
21
34
  - uses: ruby/setup-ruby@v1
22
35
  with:
23
36
  ruby-version: ${{ matrix.ruby }}
37
+ bundler-cache: true
24
38
  - name: unit testing
25
39
  env:
26
40
  CI: true
27
41
  run: |
28
- gem install bundler rake
29
- bundle install --jobs 4 --retry 3
30
42
  bundle exec rake spec
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  .bundle
2
+ spec/gemfiles/*.gemfile.lock
2
3
  Gemfile.lock
3
4
  pkg/*
4
5
  coverage/*
data/ChangeLog CHANGED
@@ -1,3 +1,14 @@
1
+ Release 0.11.0 - 2026/09/07
2
+
3
+ * Add ActiveSupport Supports (#112)
4
+ * level_fluent_logger: call super to improve compatibility with logger (#108)
5
+ * Add infos to gemspec file (#110)
6
+
7
+ Release 0.10.0 - 2025/09/04
8
+
9
+ * Add timeout option (#104)
10
+ * gemspec: add logger gem as runtime dependency
11
+
1
12
  Release 0.9.1 - 2023/12/20
2
13
 
3
14
  * Fix invalid message polluting subsequent message
data/Gemfile CHANGED
@@ -1,11 +1,12 @@
1
-
2
1
  source 'https://rubygems.org/'
3
2
 
4
- gem "fluentd", :github => 'fluent/fluentd'
5
-
6
3
  gemspec
7
4
 
8
- gem "simplecov", :require => false
5
+ gem "rake", ">= 0.9.2"
6
+ gem "rspec", ">= 3.0.0"
7
+ gem "rspec-its", ">= 1.1.0"
8
+ gem "timecop", ">= 0.3.0"
9
+ gem "fluentd"
10
+ gem "test-unit"
11
+ gem "simplecov", ">= 0.5.4", require: false
9
12
  gem "simplecov-vim"
10
-
11
- gem 'test-unit'
data/Gemfile.v0.12 CHANGED
@@ -1,4 +1,4 @@
1
- source "http://rubygems.org"
1
+ source "https://rubygems.org"
2
2
 
3
3
  gem 'json', '= 1.8.3'
4
4
  gem 'fluentd', '~> 0.12.0'
data/README.md CHANGED
@@ -148,6 +148,10 @@ Use nonblocking write(`IO#write_nonblock`) instead of normal write(`IO#write`).
148
148
 
149
149
  If `false`, `Logger#post` raises an error when nonblocking write gets `EAGAIN` (i.e. `use_nonblock` must be `true`, otherwise this will have no effect). Default: `true`
150
150
 
151
+ #### timeout (Integer)
152
+
153
+ Specify a timeout in seconds for connecting. Default: `0` (Disabled)
154
+
151
155
  #### buffer_overflow_handler (Proc)
152
156
 
153
157
  Pass callback for handling buffer overflow with pending data. See "Buffer overflow" section.
@@ -15,6 +15,10 @@ Gem::Specification.new do |gem|
15
15
  gem.description = %q{fluent logger for ruby}
16
16
  gem.summary = gem.description
17
17
 
18
+ gem.metadata['changelog_uri'] = "https://github.com/fluent/fluent-logger-ruby/blob/master/ChangeLog"
19
+ gem.metadata['source_code_uri'] = "https://github.com/fluent/fluent-logger-ruby"
20
+ gem.metadata['bug_tracker_uri'] = "https://github.com/fluent/fluent-logger-ruby/issues"
21
+
18
22
  gem.files = `git ls-files`.split("\n")
19
23
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
24
  gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
@@ -22,10 +26,6 @@ Gem::Specification.new do |gem|
22
26
  gem.license = "Apache-2.0"
23
27
 
24
28
  gem.add_dependency "msgpack", ">= 1.0.0", "< 2"
25
- gem.add_development_dependency 'rake', '>= 0.9.2'
26
- gem.add_development_dependency 'rspec', '>= 3.0.0'
27
- gem.add_development_dependency 'rspec-its', '>= 1.1.0'
28
- gem.add_development_dependency 'simplecov', '>= 0.5.4'
29
- gem.add_development_dependency 'timecop', '>= 0.3.0'
30
- gem.add_development_dependency 'webrick'
29
+ # logger gem that isn't default gems as of Ruby 3.5
30
+ gem.add_dependency "logger", "~> 1.6"
31
31
  end
@@ -22,6 +22,7 @@ require 'openssl'
22
22
  require 'monitor'
23
23
  require 'logger'
24
24
  require 'json'
25
+ require 'timeout'
25
26
 
26
27
  module Fluent
27
28
  module Logger
@@ -48,6 +49,14 @@ module Fluent
48
49
  def to_json(*args)
49
50
  @sec.to_s
50
51
  end
52
+
53
+ def as_json(*args)
54
+ # For ActiveSupport.
55
+ # By default, the custom classes are represented by their own instance variables.
56
+ # https://github.com/rails/rails/blob/87a9fdeef81f293cd972464686a6b4470ec642a2/activesupport/lib/active_support/core_ext/object/json.rb#L63
57
+ # Define it in a way that results in proper data structure when expressed in JSON
58
+ @sec
59
+ end
51
60
  end
52
61
 
53
62
  class FluentLogger < LoggerBase
@@ -115,6 +124,8 @@ module Fluent
115
124
  @wait_writeable = true
116
125
  @wait_writeable = options[:wait_writeable] if options.key?(:wait_writeable)
117
126
 
127
+ @timeout = options[:timeout] || 0
128
+
118
129
  @last_error = {}
119
130
 
120
131
  begin
@@ -170,7 +181,9 @@ module Fluent
170
181
  if @socket_path
171
182
  @con = UNIXSocket.new(@socket_path)
172
183
  else
173
- @con = TCPSocket.new(@host, @port)
184
+ @con = Timeout.timeout(@timeout) do
185
+ TCPSocket.new(@host, @port)
186
+ end
174
187
  if @tls_options
175
188
  context = OpenSSL::SSL::SSLContext.new
176
189
  if @tls_options[:insecure]
@@ -230,7 +243,7 @@ module Fluent
230
243
  res = begin
231
244
  @packer.pack(msg).to_s
232
245
  rescue NoMethodError
233
- JSON.parse(JSON.generate(msg)).to_msgpack
246
+ JSON.parse(msg.to_json).to_msgpack
234
247
  ensure
235
248
  @packer.clear
236
249
  end
@@ -26,7 +26,8 @@ module Fluent
26
26
  class LevelFluentLogger < ::Logger
27
27
 
28
28
  def initialize(tag_prefix = nil, *args)
29
- @level = ::Logger::DEBUG
29
+ super(nil)
30
+
30
31
  @default_formatter = proc do |severity, datetime, progname, message|
31
32
  map = { level: severity }
32
33
  map[:message] = message if message
@@ -1,5 +1,5 @@
1
1
  module Fluent
2
2
  module Logger
3
- VERSION = '0.9.1'
3
+ VERSION = '0.11.0'
4
4
  end
5
5
  end
@@ -6,6 +6,12 @@ require 'support/dummy_fluentd'
6
6
  require 'logger'
7
7
  require 'stringio'
8
8
  require 'fluent/logger/fluent_logger/cui'
9
+ require 'timeout'
10
+
11
+ begin
12
+ require 'active_support/json'
13
+ rescue LoadError
14
+ end
9
15
 
10
16
  describe Fluent::Logger::FluentLogger do
11
17
  let(:fluentd) {
@@ -175,7 +181,12 @@ describe Fluent::Logger::FluentLogger do
175
181
  logger.post('tag', data)
176
182
  fluentd.wait_transfer
177
183
  logger_data = fluentd.queue.last.last
178
- expect(logger_data['time']).to eq '2008-09-01 10:05:00 UTC'
184
+ if defined?(ActiveSupport)
185
+ expect(logger_data['time']).to eq '2008-09-01T10:05:00.000Z'
186
+ else
187
+ expect(logger_data['time']).to eq '2008-09-01 10:05:00 UTC'
188
+ end
189
+
179
190
  expect(logger_data['proc']).to be_truthy
180
191
  expect(logger_data['object']).to be_truthy
181
192
  }
@@ -187,7 +198,11 @@ describe Fluent::Logger::FluentLogger do
187
198
  fluentd.wait_transfer
188
199
 
189
200
  logger_data1 = fluentd.queue.first.last
190
- expect(logger_data1['time']).to eq '2008-09-01 10:05:00 UTC'
201
+ if defined?(ActiveSupport)
202
+ expect(logger_data1['time']).to eq '2008-09-01T10:05:00.000Z'
203
+ else
204
+ expect(logger_data1['time']).to eq '2008-09-01 10:05:00 UTC'
205
+ end
191
206
 
192
207
  logger_data2 = fluentd.queue.last.last
193
208
  expect(logger_data2['time']).to eq '2008-09-01 10:05:00 UTC'
@@ -198,13 +213,19 @@ describe Fluent::Logger::FluentLogger do
198
213
  'time' => Time.utc(2008, 9, 1, 10, 5, 0),
199
214
  'object' => Object.new,
200
215
  'proc' => proc { 1 },
201
- 'NaN' => (0.0/0.0) # JSON don't convert
216
+ 'NaN' => (0.0/0.0) # JSON don't convert by default
202
217
  }
203
218
  logger.post('tag', data)
204
219
  fluentd.wait_transfer
205
- expect(fluentd.queue.last).to be_nil
206
- logger_io.rewind
207
- logger_io.read =~ /FluentLogger: Can't convert to msgpack:/
220
+ if defined?(ActiveSupport)
221
+ # activesupport converts NaN to nil
222
+ # https://github.com/rails/rails/blob/90a1eaa1b30ba1f2d524e197460e549c03cf5698/activesupport/lib/active_support/core_ext/object/json.rb#L117-L118
223
+ expect(fluentd.queue.last).to eq ['logger-test.tag', {"NaN" => nil, "object" => {}, "proc" => {}, "time" => "2008-09-01T10:05:00.000Z"}]
224
+ else
225
+ expect(fluentd.queue.last).to be_nil
226
+ logger_io.rewind
227
+ expect(logger_io.read).to match(/FluentLogger: Can't convert to msgpack:/)
228
+ end
208
229
 
209
230
  logger.post('tag', { 'a' => 'b' })
210
231
  fluentd.wait_transfer
@@ -434,4 +455,13 @@ describe Fluent::Logger::FluentLogger do
434
455
  }
435
456
  end
436
457
  end
458
+
459
+ it ('support timeout') {
460
+ Timeout::timeout(5) do
461
+ # Use invalid IP address to make sure that the connection will timeout.
462
+ # (192.0.2.0 is a special IP address that can be used in only documentation. Ref. RFC 5737)
463
+ logger = Fluent::Logger::FluentLogger.new(nil, host: '192.0.2.0', port: fluentd.port, timeout: 1)
464
+ expect(logger.last_error).to be_a_kind_of(Timeout::Error)
465
+ end
466
+ }
437
467
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Load common dependencies
4
+ eval_gemfile("../../Gemfile")
5
+
6
+ # Add custom dependencies
7
+ gem "activesupport"
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Load common dependencies
4
+ eval_gemfile("../../Gemfile")
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sadayuki Furuhashi
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-12-20 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: msgpack
@@ -31,89 +30,19 @@ dependencies:
31
30
  - !ruby/object:Gem::Version
32
31
  version: '2'
33
32
  - !ruby/object:Gem::Dependency
34
- name: rake
33
+ name: logger
35
34
  requirement: !ruby/object:Gem::Requirement
36
35
  requirements:
37
- - - ">="
36
+ - - "~>"
38
37
  - !ruby/object:Gem::Version
39
- version: 0.9.2
40
- type: :development
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 0.9.2
47
- - !ruby/object:Gem::Dependency
48
- name: rspec
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: 3.0.0
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: 3.0.0
61
- - !ruby/object:Gem::Dependency
62
- name: rspec-its
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: 1.1.0
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: 1.1.0
75
- - !ruby/object:Gem::Dependency
76
- name: simplecov
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: 0.5.4
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: 0.5.4
89
- - !ruby/object:Gem::Dependency
90
- name: timecop
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: 0.3.0
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: 0.3.0
103
- - !ruby/object:Gem::Dependency
104
- name: webrick
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- type: :development
38
+ version: '1.6'
39
+ type: :runtime
111
40
  prerelease: false
112
41
  version_requirements: !ruby/object:Gem::Requirement
113
42
  requirements:
114
- - - ">="
43
+ - - "~>"
115
44
  - !ruby/object:Gem::Version
116
- version: '0'
45
+ version: '1.6'
117
46
  description: fluent logger for ruby
118
47
  email: frsyuki@gmail.com
119
48
  executables:
@@ -121,6 +50,7 @@ executables:
121
50
  extensions: []
122
51
  extra_rdoc_files: []
123
52
  files:
53
+ - ".github/dependabot.yml"
124
54
  - ".github/workflows/linux.yml"
125
55
  - ".gitignore"
126
56
  - ".rspec"
@@ -146,6 +76,8 @@ files:
146
76
  - lib/fluent/logger/version.rb
147
77
  - spec/console_logger_spec.rb
148
78
  - spec/fluent_logger_spec.rb
79
+ - spec/gemfiles/activesupport.gemfile
80
+ - spec/gemfiles/no-activesupport.gemfile
149
81
  - spec/level_fluent_logger_spec.rb
150
82
  - spec/logger_base_spec.rb
151
83
  - spec/logger_spec.rb
@@ -159,8 +91,10 @@ files:
159
91
  homepage: https://github.com/fluent/fluent-logger-ruby
160
92
  licenses:
161
93
  - Apache-2.0
162
- metadata: {}
163
- post_install_message:
94
+ metadata:
95
+ changelog_uri: https://github.com/fluent/fluent-logger-ruby/blob/master/ChangeLog
96
+ source_code_uri: https://github.com/fluent/fluent-logger-ruby
97
+ bug_tracker_uri: https://github.com/fluent/fluent-logger-ruby/issues
164
98
  rdoc_options: []
165
99
  require_paths:
166
100
  - lib
@@ -175,8 +109,21 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
109
  - !ruby/object:Gem::Version
176
110
  version: '0'
177
111
  requirements: []
178
- rubygems_version: 3.4.1
179
- signing_key:
112
+ rubygems_version: 4.0.18
180
113
  specification_version: 4
181
114
  summary: fluent logger for ruby
182
- test_files: []
115
+ test_files:
116
+ - spec/console_logger_spec.rb
117
+ - spec/fluent_logger_spec.rb
118
+ - spec/gemfiles/activesupport.gemfile
119
+ - spec/gemfiles/no-activesupport.gemfile
120
+ - spec/level_fluent_logger_spec.rb
121
+ - spec/logger_base_spec.rb
122
+ - spec/logger_spec.rb
123
+ - spec/null_logger_spec.rb
124
+ - spec/plugin/out_test.rb
125
+ - spec/spec_helper.rb
126
+ - spec/support/dummy_fluentd.rb
127
+ - spec/support/dummy_serverengine.rb
128
+ - spec/support/timecop.rb
129
+ - spec/test_logger_spec.rb