hubrise-act-fluent-logger-rails 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 3506622ce18800cf515fe98dbeac0f743e98a0f3f6836fc3bfb38fd22265acf0
4
+ data.tar.gz: dad2e01eef17608413e8659c4053cf3e9aed7e53c3f659684aeead7b445ad74c
5
+ SHA512:
6
+ metadata.gz: 77677a70ef7f8ddea87a11fa89f6e474c4ef9d8a9df45cdc8e8d017a76d2d1bd1a1659894df2ff78587a32e2c0bdb11d305e87c29a124d9c8f875cf6882c1e74
7
+ data.tar.gz: f28b450e7b891fa18af55f70ea0afe69916ab0b6a749b0fcb4cd3c7da148c670c5e371a77da55e6c296ad1f036adf0bd1e00610a8e9e48fa3ed6c45705ecf85a
@@ -0,0 +1,21 @@
1
+ *.gem
2
+ *.rbc
3
+ *~
4
+ .bundle
5
+ .config
6
+ .yardoc
7
+ /vendor
8
+ Gemfile.lock
9
+ gemfiles/*.lock
10
+ InstalledFiles
11
+ _yardoc
12
+ coverage
13
+ doc/
14
+ lib/bundler/man
15
+ pkg
16
+ rdoc
17
+ spec/reports
18
+ test/tmp
19
+ test/version_tmp
20
+ tmp
21
+ .ruby-version
@@ -0,0 +1,47 @@
1
+ language: ruby
2
+ before_install:
3
+ - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
4
+ - gem install bundler -v '< 2'
5
+ rvm:
6
+ - 2.1.10
7
+ - 2.2.10
8
+ - 2.3.8
9
+ - 2.4.5
10
+ - 2.5.3
11
+ - 2.6.1
12
+ gemfile:
13
+ - gemfiles/rails_4.0.gemfile
14
+ - gemfiles/rails_4.1.gemfile
15
+ - gemfiles/rails_4.2.gemfile
16
+ - gemfiles/rails_5.0.gemfile
17
+ - gemfiles/rails_5.1.gemfile
18
+ - gemfiles/rails_5.2.gemfile
19
+ - gemfiles/rails_6.0.gemfile
20
+ matrix:
21
+ exclude:
22
+ - rvm: 2.1.10
23
+ gemfile: gemfiles/rails_5.0.gemfile
24
+ - rvm: 2.1.10
25
+ gemfile: gemfiles/rails_5.1.gemfile
26
+ - rvm: 2.1.10
27
+ gemfile: gemfiles/rails_5.2.gemfile
28
+ - rvm: 2.1.10
29
+ gemfile: gemfiles/rails_6.0.gemfile
30
+ - rvm: 2.2.10
31
+ gemfile: gemfiles/rails_6.0.gemfile
32
+ - rvm: 2.3.8
33
+ gemfile: gemfiles/rails_6.0.gemfile
34
+ - rvm: 2.4.5
35
+ gemfile: gemfiles/rails_4.0.gemfile
36
+ - rvm: 2.4.5
37
+ gemfile: gemfiles/rails_4.1.gemfile
38
+ - rvm: 2.4.5
39
+ gemfile: gemfiles/rails_6.0.gemfile
40
+ - rvm: 2.5.3
41
+ gemfile: gemfiles/rails_4.0.gemfile
42
+ - rvm: 2.5.3
43
+ gemfile: gemfiles/rails_4.1.gemfile
44
+ - rvm: 2.6.1
45
+ gemfile: gemfiles/rails_4.0.gemfile
46
+ - rvm: 2.6.1
47
+ gemfile: gemfiles/rails_4.1.gemfile
@@ -0,0 +1,34 @@
1
+ appraise 'rails-4.0' do
2
+ gem 'railties', '4.0.13'
3
+ gem 'activesupport', '4.0.13'
4
+ end
5
+
6
+ appraise 'rails-4.1' do
7
+ gem 'railties', '4.1.16'
8
+ gem 'activesupport', '4.1.16'
9
+ end
10
+
11
+ appraise 'rails-4.2' do
12
+ gem 'railties', '4.2.8'
13
+ gem 'activesupport', '4.2.8'
14
+ end
15
+
16
+ appraise 'rails-5.0' do
17
+ gem 'railties', '5.0.2'
18
+ gem 'activesupport', '5.0.2'
19
+ end
20
+
21
+ appraise 'rails-5.1' do
22
+ gem 'railties', '5.1.0'
23
+ gem 'activesupport', '5.1.0'
24
+ end
25
+
26
+ appraise 'rails-5.2' do
27
+ gem 'railties', '5.2.0'
28
+ gem 'activesupport', '5.2.0'
29
+ end
30
+
31
+ appraise 'rails-6.0' do
32
+ gem 'railties', '6.0.0.beta2'
33
+ gem 'activesupport', '6.0.0.beta2'
34
+ end
@@ -0,0 +1,69 @@
1
+ ## 0.5.0 / April 29 2017
2
+
3
+ * Rails 5.2
4
+ * support nanosecond_precision(Support nanosecond precision when sending logs to Fluentd #43)*
5
+
6
+ ## 0.4.0 / April 29 2017
7
+
8
+ * Rails 5.1
9
+
10
+ ## 0.3.1 / August 18 2016
11
+
12
+ * Replace dependency from rails to railties and activesupport.
13
+
14
+ ## 0.3.0 / July 12 2016
15
+
16
+ * Rails 5
17
+
18
+ ## 0.2.0 / Mar 20 2016
19
+
20
+ * Add severity_key parameter. It is The key of severity(DEBUG, INFO, WARN, ERROR).
21
+
22
+ ## 0.1.10 / Dec 23 2015
23
+
24
+ * flush immediately.
25
+
26
+ ## 0.1.9 / Dec 16 2015
27
+
28
+ * Added settings: parameter to ActFluentLoggerRails::Logger.new.
29
+
30
+ ## 0.1.8 / Nov 14 2015
31
+
32
+ * Output Object#inspect if message is not String and not Exception.
33
+
34
+ ## 0.1.7 / July 30 2015
35
+
36
+ * Be able to log exceptions #15.
37
+
38
+ ## 0.1.6 / March 20 2015
39
+
40
+ * Fix incompatible character encodings #13.
41
+
42
+ ## 0.1.5 / July 19 2014
43
+
44
+ * Fix keynames of EVN['FLUENTD_URL']
45
+
46
+ ## 0.1.4 / July 18 2014
47
+
48
+ * Enable to use EVN['FLUENTD_URL']
49
+
50
+ ## 0.1.3 / April 11 2014
51
+
52
+ * Rails 4.1.0
53
+
54
+ ## 0.1.2 / September 30 2013
55
+
56
+ * Add 'gem.license = "MIT"' to gemspec.
57
+
58
+ ## 0.1.1 / September 26 2013
59
+
60
+ * Add log_tags feature.
61
+
62
+ ## 0.1.0 / September 16 2013
63
+
64
+ * Rails 4.0.0
65
+
66
+ ## 0.0.4 / January 19 2013
67
+
68
+ * Add messages_type parameter to fluent-logger.yml to specifying
69
+ output messages type 'string' or 'array'. Thanks to davidrenne.
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'appraisal'
4
+
5
+ # Specify your gem's dependencies in act-fluent-logger-rails.gemspec
6
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Yoshinori Tahara
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1 @@
1
+ # https://github.com/actindi/act-fluent-logger-rails
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'act-fluent-logger-rails/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "hubrise-act-fluent-logger-rails"
8
+ gem.version = ActFluentLoggerRails::VERSION
9
+ gem.authors = ["TAHARA Yoshinori"]
10
+ gem.description = %q{Fluent logger}
11
+ gem.summary = %q{Fluent logger}
12
+ gem.homepage = "https://github.com/HubRise/act-fluent-logger-rails"
13
+ gem.license = "MIT"
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_development_dependency "rspec", '~> 3.5.0'
21
+ gem.add_runtime_dependency "fluent-logger"
22
+ gem.add_runtime_dependency "railties", ">= 4", "< 6.1"
23
+ gem.add_runtime_dependency "activesupport", ">= 4", "< 6.1"
24
+ end
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "railties", "4.0.13"
7
+ gem "activesupport", "4.0.13"
8
+
9
+ gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "railties", "4.1.16"
7
+ gem "activesupport", "4.1.16"
8
+
9
+ gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "railties", "4.2.8"
7
+ gem "activesupport", "4.2.8"
8
+
9
+ gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "railties", "5.0.2"
7
+ gem "activesupport", "5.0.2"
8
+
9
+ gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "railties", "5.1.0"
7
+ gem "activesupport", "5.1.0"
8
+
9
+ gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "railties", "5.2.0"
7
+ gem "activesupport", "5.2.0"
8
+
9
+ gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "railties", "6.0.0.beta3"
7
+ gem "activesupport", "6.0.0.beta3"
8
+
9
+ gemspec path: "../"
@@ -0,0 +1,2 @@
1
+ require "act-fluent-logger-rails/version"
2
+ require "act-fluent-logger-rails/logger"
@@ -0,0 +1,171 @@
1
+ require 'fluent-logger'
2
+ require 'active_support/core_ext'
3
+ require 'uri'
4
+ require 'cgi'
5
+
6
+ module ActFluentLoggerRails
7
+
8
+ module Logger
9
+
10
+ # Severity label for logging. (max 5 char)
11
+ SEV_LABEL = %w(DEBUG INFO WARN ERROR FATAL ANY)
12
+
13
+ def self.new(config_file: Rails.root.join("config", "fluent-logger.yml"),
14
+ log_tags: {},
15
+ settings: {},
16
+ flush_immediately: false)
17
+ Rails.application.config.log_tags = log_tags.values
18
+ if Rails.application.config.respond_to?(:action_cable)
19
+ Rails.application.config.action_cable.log_tags = log_tags.values.map do |x|
20
+ case
21
+ when x.respond_to?(:call)
22
+ x
23
+ when x.is_a?(Symbol)
24
+ -> (request) { request.send(x) }
25
+ else
26
+ -> (request) { x }
27
+ end
28
+ end
29
+ end
30
+ if (0 == settings.length)
31
+ fluent_config = if ENV["FLUENTD_URL"]
32
+ self.parse_url(ENV["FLUENTD_URL"])
33
+ else
34
+ YAML.load(ERB.new(config_file.read).result)[Rails.env]
35
+ end
36
+ settings = {
37
+ tag: fluent_config['tag'],
38
+ host: fluent_config['fluent_host'],
39
+ port: fluent_config['fluent_port'],
40
+ nanosecond_precision: fluent_config['nanosecond_precision'],
41
+ messages_type: fluent_config['messages_type'],
42
+ severity_key: fluent_config['severity_key'],
43
+ }
44
+ end
45
+
46
+ settings[:flush_immediately] ||= flush_immediately
47
+
48
+ level = SEV_LABEL.index(Rails.application.config.log_level.to_s.upcase)
49
+ logger = ActFluentLoggerRails::FluentLogger.new(settings, level, log_tags)
50
+ logger = ActiveSupport::TaggedLogging.new(logger)
51
+ logger.extend self
52
+ end
53
+
54
+ def self.parse_url(fluentd_url)
55
+ uri = URI.parse fluentd_url
56
+ params = CGI.parse uri.query
57
+
58
+ {
59
+ fluent_host: uri.host,
60
+ fluent_port: uri.port,
61
+ tag: uri.path[1..-1],
62
+ nanosecond_precision: params['nanosecond_precision'].try(:first),
63
+ messages_type: params['messages_type'].try(:first),
64
+ severity_key: params['severity_key'].try(:first),
65
+ }.stringify_keys
66
+ end
67
+
68
+ def tagged(*tags)
69
+ @tags = tags.flatten
70
+ yield self
71
+ ensure
72
+ flush
73
+ end
74
+ end
75
+
76
+ class FluentLogger < ActiveSupport::Logger
77
+ def initialize(options, level, log_tags)
78
+ self.level = level
79
+ port = options[:port]
80
+ host = options[:host]
81
+ nanosecond_precision = options[:nanosecond_precision]
82
+ @messages_type = (options[:messages_type] || :array).to_sym
83
+ @tag = options[:tag]
84
+ @severity_key = (options[:severity_key] || :severity).to_sym
85
+ @flush_immediately = options[:flush_immediately]
86
+ logger_opts = {host: host, port: port, nanosecond_precision: nanosecond_precision}
87
+ @fluent_logger = ::Fluent::Logger::FluentLogger.new(nil, logger_opts)
88
+ @severity = 0
89
+ @messages = []
90
+ @log_tags = log_tags
91
+ @map = {}
92
+ after_initialize if respond_to? :after_initialize
93
+ end
94
+
95
+ def add(severity, message = nil, progname = nil, &block)
96
+ return true if severity < level
97
+ message = (block_given? ? block.call : progname) if message.blank?
98
+ return true if message.blank?
99
+ add_message(severity, message)
100
+ true
101
+ end
102
+
103
+ def add_message(severity, message)
104
+ @severity = severity if @severity < severity
105
+
106
+ message =
107
+ case message
108
+ when ::String
109
+ message
110
+ when ::Exception
111
+ "#{ message.message } (#{ message.class })\n" <<
112
+ (message.backtrace || []).join("\n")
113
+ else
114
+ message.inspect
115
+ end
116
+
117
+ if message.encoding == Encoding::UTF_8
118
+ @messages << message
119
+ else
120
+ @messages << message.dup.force_encoding(Encoding::UTF_8)
121
+ end
122
+
123
+ flush if @flush_immediately
124
+ end
125
+
126
+ def [](key)
127
+ @map[key]
128
+ end
129
+
130
+ def []=(key, value)
131
+ @map[key] = value
132
+ end
133
+
134
+ def flush
135
+ return if @messages.empty?
136
+ messages = if @messages_type == :string
137
+ @messages.join("\n")
138
+ else
139
+ @messages
140
+ end
141
+ @map[:messages] = messages
142
+ @map[@severity_key] = format_severity(@severity)
143
+ if @tags
144
+ @log_tags.keys.zip(@tags).each do |k, v|
145
+ @map[k] = v
146
+ end
147
+ end
148
+ @fluent_logger.post(@tag, @map)
149
+ @severity = 0
150
+ @messages.clear
151
+ @tags = nil
152
+ @map.clear
153
+ end
154
+
155
+ def close
156
+ @fluent_logger.close
157
+ end
158
+
159
+ def level
160
+ @level
161
+ end
162
+
163
+ def level=(l)
164
+ @level = l
165
+ end
166
+
167
+ def format_severity(severity)
168
+ ActFluentLoggerRails::Logger::SEV_LABEL[severity] || 'ANY'
169
+ end
170
+ end
171
+ end
@@ -0,0 +1,3 @@
1
+ module ActFluentLoggerRails
2
+ VERSION = "0.5.0"
3
+ end
@@ -0,0 +1,196 @@
1
+ require 'spec_helper'
2
+ require 'tempfile'
3
+
4
+
5
+ describe ActFluentLoggerRails::Logger do
6
+ before do
7
+ stub_const('Rails', Class.new) unless defined?(Rails)
8
+ allow(Rails).to receive(:env).and_return('test')
9
+ allow(Rails).to receive_message_chain(:application, :config, :log_level).and_return(:debug)
10
+ allow(Rails).to receive_message_chain(:application, :config, :log_tags=)
11
+
12
+ class MyLogger
13
+ attr_accessor :log
14
+ def post(tag, map)
15
+ @log ||= []
16
+ @log << [tag, map.merge(messages: map[:messages].dup)]
17
+ end
18
+ def clear
19
+ @log.clear
20
+ end
21
+ def close
22
+ end
23
+ end
24
+ @my_logger = MyLogger.new
25
+ allow(Fluent::Logger::FluentLogger).to receive(:new).and_return(@my_logger)
26
+
27
+ @config_file = Tempfile.new('fluent-logger-config')
28
+ @config_file.close(false)
29
+ File.open(@config_file.path, 'w') {|f|
30
+ f.puts <<EOF
31
+ test:
32
+ fluent_host: '127.0.0.1'
33
+ fluent_port: 24224
34
+ tag: 'foo'
35
+ EOF
36
+ }
37
+ end
38
+
39
+ let(:log_tags) {
40
+ { uuid: :uuid,
41
+ foo: ->(request) { 'foo_value' }
42
+ }
43
+ }
44
+
45
+ let(:logger) {
46
+ ActFluentLoggerRails::Logger.new(config_file: File.new(@config_file.path),
47
+ log_tags: log_tags)
48
+ }
49
+
50
+ let(:request) {
51
+ double('request', uuid: 'uuid_value')
52
+ }
53
+
54
+ describe 'logging' do
55
+
56
+ describe 'basic' do
57
+ it 'info' do
58
+ # see Rails::Rack::compute_tags
59
+ tags = log_tags.values.collect do |tag|
60
+ case tag
61
+ when Proc
62
+ tag.call(request)
63
+ when Symbol
64
+ request.send(tag)
65
+ else
66
+ tag
67
+ end
68
+ end
69
+ logger[:abc] = 'xyz'
70
+ logger.tagged(tags) { logger.info('hello') }
71
+ expect(@my_logger.log).to eq([['foo', {
72
+ abc: 'xyz',
73
+ messages: ['hello'],
74
+ severity: 'INFO',
75
+ uuid: 'uuid_value',
76
+ foo: 'foo_value'
77
+ } ]])
78
+ @my_logger.clear
79
+ logger.tagged(tags) { logger.info('world'); logger.info('bye') }
80
+ expect(@my_logger.log).to eq([['foo', {
81
+ messages: ['world', 'bye'],
82
+ severity: 'INFO',
83
+ uuid: 'uuid_value',
84
+ foo: 'foo_value'
85
+ } ]])
86
+ end
87
+ end
88
+
89
+ describe 'frozen ascii-8bit string' do
90
+ before do
91
+ logger.instance_variable_set(:@messages_type, :string)
92
+ end
93
+
94
+ after do
95
+ logger.instance_variable_set(:@messages_type, :array)
96
+ end
97
+
98
+ it 'join messages' do
99
+ ascii = "\xe8\x8a\xb1".force_encoding('ascii-8bit').freeze
100
+ logger.tagged([request]) {
101
+ logger.info(ascii)
102
+ logger.info('咲く')
103
+ }
104
+ expect(@my_logger.log[0][1][:messages]).to eq("花\n咲く")
105
+ expect(ascii.encoding).to eq(Encoding::ASCII_8BIT)
106
+ end
107
+ end
108
+
109
+ describe 'Exception' do
110
+ it 'output message, class, backtrace' do
111
+ begin
112
+ 3 / 0
113
+ rescue => e
114
+ logger.tagged([request]) {
115
+ logger.error(e)
116
+ }
117
+ expect(@my_logger.log[0][1][:messages][0]).
118
+ to match(%r|divided by 0 \(ZeroDivisionError\).*spec/logger_spec\.rb:|m)
119
+ end
120
+ end
121
+ end
122
+
123
+ describe 'Object' do
124
+ it 'output inspect' do
125
+ x = Object.new
126
+ logger.tagged([request]) {
127
+ logger.info(x)
128
+ }
129
+ expect(@my_logger.log[0][1][:messages][0]).to eq(x.inspect)
130
+ end
131
+ end
132
+
133
+ describe 'severity_key' do
134
+ describe 'not specified' do
135
+ it 'severity' do
136
+ logger.tagged([request]) { logger.info('hello') }
137
+ expect(@my_logger.log[0][1][:severity]).to eq('INFO')
138
+ end
139
+ end
140
+
141
+ describe 'severity_key: level' do
142
+ before do
143
+ @config_file = Tempfile.new('fluent-logger-config')
144
+ @config_file.close(false)
145
+ File.open(@config_file.path, 'w') {|f|
146
+ f.puts <<EOF
147
+ test:
148
+ fluent_host: '127.0.0.1'
149
+ fluent_port: 24224
150
+ tag: 'foo'
151
+ severity_key: 'level' # default severity
152
+ EOF
153
+ }
154
+ end
155
+
156
+ it 'level' do
157
+ logger.tagged([request]) { logger.info('hello') }
158
+ expect(@my_logger.log[0][1][:level]).to eq('INFO')
159
+ end
160
+ end
161
+ end
162
+ end
163
+
164
+ describe "use ENV['FLUENTD_URL']" do
165
+ let(:fluentd_url) { "http://fluentd.example.com:42442/hoge?messages_type=string&severity_key=level" }
166
+
167
+ describe ".parse_url" do
168
+ subject { described_class.parse_url(fluentd_url) }
169
+ it { expect(subject['tag']).to eq 'hoge' }
170
+ it { expect(subject['fluent_host']).to eq 'fluentd.example.com' }
171
+ it { expect(subject['fluent_port']).to eq 42442 }
172
+ it { expect(subject['messages_type']).to eq 'string' }
173
+ it { expect(subject['severity_key']).to eq 'level' }
174
+ end
175
+ end
176
+
177
+ describe 'flush_immediately' do
178
+ describe 'flush_immediately: true' do
179
+ it 'flushed' do
180
+ logger = ActFluentLoggerRails::Logger.new(config_file: File.new(@config_file.path),
181
+ flush_immediately: true)
182
+ logger.info('Immediately!')
183
+ expect(@my_logger.log[0][1][:messages][0]).to eq('Immediately!')
184
+ end
185
+ end
186
+
187
+ describe 'flush_immediately: false' do
188
+ it 'flushed' do
189
+ logger = ActFluentLoggerRails::Logger.new(config_file: File.new(@config_file.path),
190
+ flush_immediately: false)
191
+ logger.info('Immediately!')
192
+ expect(@my_logger.log).to eq(nil)
193
+ end
194
+ end
195
+ end
196
+ end
@@ -0,0 +1,10 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ require 'active_support'
5
+ require 'active_support/deprecation'
6
+ require 'active_support/core_ext/module'
7
+ require 'active_support/logger'
8
+ require 'active_support/tagged_logging'
9
+ require 'yaml'
10
+ require 'act-fluent-logger-rails/logger'
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hubrise-act-fluent-logger-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ platform: ruby
6
+ authors:
7
+ - TAHARA Yoshinori
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-11-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 3.5.0
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 3.5.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: fluent-logger
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: railties
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '4'
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '6.1'
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '4'
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '6.1'
61
+ - !ruby/object:Gem::Dependency
62
+ name: activesupport
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '4'
68
+ - - "<"
69
+ - !ruby/object:Gem::Version
70
+ version: '6.1'
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '4'
78
+ - - "<"
79
+ - !ruby/object:Gem::Version
80
+ version: '6.1'
81
+ description: Fluent logger
82
+ email:
83
+ executables: []
84
+ extensions: []
85
+ extra_rdoc_files: []
86
+ files:
87
+ - ".gitignore"
88
+ - ".travis.yml"
89
+ - Appraisals
90
+ - CHANGELOG.md
91
+ - Gemfile
92
+ - LICENSE.txt
93
+ - README.md
94
+ - Rakefile
95
+ - act-fluent-logger-rails.gemspec
96
+ - gemfiles/rails_4.0.gemfile
97
+ - gemfiles/rails_4.1.gemfile
98
+ - gemfiles/rails_4.2.gemfile
99
+ - gemfiles/rails_5.0.gemfile
100
+ - gemfiles/rails_5.1.gemfile
101
+ - gemfiles/rails_5.2.gemfile
102
+ - gemfiles/rails_6.0.gemfile
103
+ - lib/act-fluent-logger-rails.rb
104
+ - lib/act-fluent-logger-rails/logger.rb
105
+ - lib/act-fluent-logger-rails/version.rb
106
+ - spec/logger_spec.rb
107
+ - spec/spec_helper.rb
108
+ homepage: https://github.com/HubRise/act-fluent-logger-rails
109
+ licenses:
110
+ - MIT
111
+ metadata: {}
112
+ post_install_message:
113
+ rdoc_options: []
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubyforge_project:
128
+ rubygems_version: 2.7.6
129
+ signing_key:
130
+ specification_version: 4
131
+ summary: Fluent logger
132
+ test_files:
133
+ - spec/logger_spec.rb
134
+ - spec/spec_helper.rb