semantic_logger 4.5.0 → 4.6.0.beta1

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: 34b3b78799e196b270d81aba7deb9b0accd1187a900967a3943dd03301c63199
4
- data.tar.gz: 775b6eeca4ca6b9c38e9213e7f32fee9d179ce36148433dfa91a8630f74873b3
3
+ metadata.gz: bafa2ce169caccee2a851d7ad8a5b5b7d1e3104fa6894ff8c21756e78f59621f
4
+ data.tar.gz: 110b972e305d619672761cbc34652556615d79015824c1c538c8819e69a01ec8
5
5
  SHA512:
6
- metadata.gz: 7cda8a50c62a2dcdb079d5f96cbde61e5cc941c443122a3bbc102a1513bc3686d44a20cca28e7627444bf640a6329035aefc43cb6111a3e6b9cb91411fe33782
7
- data.tar.gz: caf355bf16e08b133fe07ddd6b4cab813b6e7224b3e1f152e1ab54cf30f574fc8665f99ae3938078fb35fcfeea3643d565a814cbe2774d263135c93722147b06
6
+ metadata.gz: bec35476ebcc1af48f5b056b7f109652d86c437da257e70e82a2514dfdbf280d12cc7acd29c9c09a49ed76fbd7d7b09ac200a9d3477089685e4e2a45b9d899fe
7
+ data.tar.gz: 501e8708e49344fb056e9959c8d77b2a907fbbfe938893a5000edbb1dd9f57d710abd341e5b0566f7aafdb624ea424a38815de89fa845fcdaf01563aa41c0d72
@@ -11,15 +11,5 @@ module SemanticLogger
11
11
  MAGENTA = "\e[35m".freeze
12
12
  CYAN = "\e[36m".freeze
13
13
  WHITE = "\e[37m".freeze
14
-
15
- # DEPRECATED - NOT USED
16
- LEVEL_MAP = {
17
- trace: MAGENTA,
18
- debug: GREEN,
19
- info: CYAN,
20
- warn: BOLD,
21
- error: RED,
22
- fatal: RED
23
- }.freeze
24
14
  end
25
15
  end
@@ -23,71 +23,62 @@ module SemanticLogger
23
23
  autoload :Wrapper, 'semantic_logger/appender/wrapper'
24
24
  # @formatter:on
25
25
 
26
- # DEPRECATED, use SemanticLogger::AnsiColors
27
- AnsiColors = SemanticLogger::AnsiColors
28
-
29
- # DEPRECATED: use SemanticLogger::Formatters::Color.new
30
- def self.colorized_formatter
31
- SemanticLogger::Formatters::Color.new
32
- end
33
-
34
- # DEPRECATED: use SemanticLogger::Formatters::Json.new
35
- def self.json_formatter
36
- SemanticLogger::Formatters::Json.new
37
- end
38
-
39
26
  # Returns [SemanticLogger::Subscriber] appender for the supplied options
40
- def self.factory(options, &block)
41
- options = options.dup
42
- async = options.delete(:async)
43
- batch = options.delete(:batch)
44
-
45
- # Extract batch and async options
46
- proxy_options = {}
47
- ASYNC_OPTION_KEYS.each { |key| proxy_options[key] = options.delete(key) if options.key?(key) }
48
-
49
- appender = build(options, &block)
27
+ def self.factory(async: false, batch: nil,
28
+ max_queue_size: 10_000, lag_check_interval: 1_000, lag_threshold_s: 30,
29
+ batch_size: 300, batch_seconds: 5,
30
+ **args,
31
+ &block
32
+ )
33
+ appender = build(**args, &block)
50
34
 
51
35
  # If appender implements #batch, then it should use the batch proxy by default.
52
36
  batch = true if batch.nil? && appender.respond_to?(:batch)
53
37
 
54
38
  if batch == true
55
- proxy_options[:appender] = appender
56
- Appender::AsyncBatch.new(proxy_options)
39
+ Appender::AsyncBatch.new(
40
+ appender: appender,
41
+ max_queue_size: max_queue_size,
42
+ lag_threshold_s: lag_threshold_s,
43
+ batch_size: batch_size,
44
+ batch_seconds: batch_seconds
45
+ )
57
46
  elsif async == true
58
- proxy_options[:appender] = appender
59
- Appender::Async.new(proxy_options)
60
-
61
-
47
+ Appender::Async.new(
48
+ appender: appender,
49
+ max_queue_size: max_queue_size,
50
+ lag_check_interval: lag_check_interval,
51
+ lag_threshold_s: lag_threshold_s
52
+ )
62
53
  else
63
54
  appender
64
55
  end
65
56
  end
66
57
 
67
- ASYNC_OPTION_KEYS = %i[max_queue_size lag_threshold_s batch_size batch_seconds lag_check_interval].freeze
68
-
69
58
  # Returns [Subscriber] instance from the supplied options.
70
- def self.build(options, &block)
71
- if options[:io] || options[:file_name]
72
- SemanticLogger::Appender::File.new(options, &block)
73
- elsif (appender = options.delete(:appender))
59
+ def self.build(io: nil, file_name: nil, appender: nil, metric: nil, logger: nil, **args, &block)
60
+ if io || file_name
61
+ SemanticLogger::Appender::File.new(io: io, file_name: file_name, **args, &block)
62
+ elsif logger
63
+ SemanticLogger::Appender::Wrapper.new(logger: logger, **args, &block)
64
+ elsif appender
74
65
  if appender.is_a?(Symbol)
75
- SemanticLogger::Utils.constantize_symbol(appender).new(options)
66
+ SemanticLogger::Utils.constantize_symbol(appender).new(**args)
76
67
  elsif appender.is_a?(Subscriber)
77
68
  appender
78
69
  else
79
70
  raise(ArgumentError, "Parameter :appender must be either a Symbol or an object derived from SemanticLogger::Subscriber, not: #{appender.inspect}")
80
71
  end
81
- elsif (appender = options.delete(:metric))
82
- if appender.is_a?(Symbol)
83
- SemanticLogger::Utils.constantize_symbol(appender, 'SemanticLogger::Metric').new(options)
84
- elsif appender.is_a?(Subscriber)
85
- appender
72
+ elsif metric
73
+ if metric.is_a?(Symbol)
74
+ SemanticLogger::Utils.constantize_symbol(metric, 'SemanticLogger::Metric').new(**args)
75
+ elsif metric.is_a?(Subscriber)
76
+ metric
86
77
  else
87
78
  raise(ArgumentError, "Parameter :metric must be either a Symbol or an object derived from SemanticLogger::Subscriber, not: #{appender.inspect}")
88
79
  end
89
- elsif options[:logger]
90
- SemanticLogger::Appender::Wrapper.new(options, &block)
80
+ else
81
+ raise(ArgumentError, 'To create an appender it must supply one of the following: :io, :file_name, :appender, :metric, or :logger')
91
82
  end
92
83
  end
93
84
 
@@ -15,6 +15,7 @@ module SemanticLogger
15
15
  def_delegator :@appender, :filter
16
16
  def_delegator :@appender, :host
17
17
  def_delegator :@appender, :application
18
+ def_delegator :@appender, :environment
18
19
  def_delegator :@appender, :level
19
20
  def_delegator :@appender, :level=
20
21
  def_delegator :@appender, :logger
@@ -131,6 +131,7 @@ module SemanticLogger
131
131
  formatter: nil,
132
132
  filter: nil,
133
133
  application: nil,
134
+ environment: nil,
134
135
  host: nil,
135
136
  metrics: false,
136
137
  **elasticsearch_args,
@@ -144,7 +145,7 @@ module SemanticLogger
144
145
  @elasticsearch_args[:url] = url if url && !elasticsearch_args[:hosts]
145
146
  @elasticsearch_args[:logger] = logger
146
147
 
147
- super(level: level, formatter: formatter, filter: filter, application: application, host: host, metrics: false, &block)
148
+ super(level: level, formatter: formatter, filter: filter, application: application, environment: environment, host: host, metrics: false, &block)
148
149
  reopen
149
150
  end
150
151
 
@@ -127,6 +127,7 @@ module SemanticLogger
127
127
  message: h.delete(:message),
128
128
  event: h
129
129
  }
130
+ message[:environment] = logger.environment if logger.environment
130
131
  message[:sourcetype] = source_type if source_type
131
132
  message
132
133
  end
@@ -96,6 +96,7 @@ module SemanticLogger
96
96
  time: h.delete(:time),
97
97
  event: h
98
98
  }
99
+ message[:environment] = logger.environment if logger.environment
99
100
  message[:sourcetype] = source_type if source_type
100
101
  message[:index] = index if index
101
102
  message.to_json
@@ -89,7 +89,7 @@ module SemanticLogger
89
89
  # where multiple sends are expected during a single response
90
90
  # Default: true
91
91
  #
92
- # :connect_retry_count [Fixnum]
92
+ # :connect_retry_count [Integer]
93
93
  # Number of times to retry connecting when a connection fails
94
94
  # Default: 10
95
95
  #
@@ -97,7 +97,7 @@ module SemanticLogger
97
97
  # Number of seconds between connection retry attempts after the first failed attempt
98
98
  # Default: 0.5
99
99
  #
100
- # :retry_count [Fixnum]
100
+ # :retry_count [Integer]
101
101
  # Number of times to retry when calling #retry_on_connection_failure
102
102
  # This is independent of :connect_retry_count which still applies with
103
103
  # connection failures. This retry controls upto how many times to retry the
@@ -182,7 +182,7 @@ module SemanticLogger
182
182
  # connect_retry_count: 5
183
183
  # )
184
184
  def initialize(separator: "\n",
185
- level: nil, formatter: nil, filter: nil, application: nil, host: nil, metrics: false,
185
+ level: nil, formatter: nil, filter: nil, application: nil, environment: nil, host: nil, metrics: false,
186
186
  **tcp_client_args, &block)
187
187
  @separator = separator
188
188
  @tcp_client_args = tcp_client_args
@@ -191,7 +191,7 @@ module SemanticLogger
191
191
  Net::TCPClient.logger = logger
192
192
  Net::TCPClient.logger.name = 'Net::TCPClient'
193
193
 
194
- super(level: level, formatter: formatter, filter: filter, application: application, host: host, &block)
194
+ super(level: level, formatter: formatter, filter: filter, application: application, environment: environment, host: host, &block)
195
195
  reopen
196
196
  end
197
197
 
@@ -8,9 +8,8 @@ module SemanticLogger
8
8
  @logger.name = self.class.name
9
9
  end
10
10
 
11
- def add(options, deprecated_level = nil, &block)
12
- options = options.is_a?(Hash) ? options.dup : convert_old_appender_args(options, deprecated_level)
13
- appender = SemanticLogger::Appender.factory(options, &block)
11
+ def add(**args, &block)
12
+ appender = SemanticLogger::Appender.factory(**args, &block)
14
13
  self << appender
15
14
  appender
16
15
  end
@@ -65,25 +64,5 @@ module SemanticLogger
65
64
  end
66
65
  logger.trace 'All appenders re-opened'
67
66
  end
68
-
69
- private
70
-
71
- # Backward compatibility
72
- def convert_old_appender_args(appender, level)
73
- options = {}
74
- options[:level] = level if level
75
-
76
- if appender.is_a?(String)
77
- options[:file_name] = appender
78
- elsif appender.is_a?(IO)
79
- options[:io] = appender
80
- elsif appender.is_a?(Symbol) || appender.is_a?(Subscriber)
81
- options[:appender] = appender
82
- else
83
- options[:logger] = appender
84
- end
85
- warn "[DEPRECATED] SemanticLogger.add_appender parameters have changed. Please use: #{options.inspect}"
86
- options
87
- end
88
67
  end
89
68
  end
@@ -233,23 +233,11 @@ module SemanticLogger
233
233
  SemanticLogger.silence(new_level, &block)
234
234
  end
235
235
 
236
- # Deprecated. Use `SemanticLogger.tagged`
236
+ # :nodoc:
237
237
  def fast_tag(tag, &block)
238
238
  SemanticLogger.fast_tag(tag, &block)
239
239
  end
240
240
 
241
- # :nodoc:
242
- def with_payload(payload, &block)
243
- warn '#with_payload is deprecated, use SemanticLogger.named_tagged'
244
- SemanticLogger.named_tagged(payload, &block)
245
- end
246
-
247
- # :nodoc:
248
- def payload
249
- warn '#payload is deprecated, use SemanticLogger.named_tags'
250
- SemanticLogger.named_tags
251
- end
252
-
253
241
  # Write log data to underlying data storage
254
242
  def log(_log_)
255
243
  raise NotImplementedError, 'Logging Appender must implement #log(log)'
@@ -2,11 +2,11 @@ require 'time'
2
2
  module SemanticLogger
3
3
  module Formatters
4
4
  class Base
5
- attr_accessor :time_format, :log_host, :log_application, :precision
5
+ attr_accessor :time_format, :log_host, :log_application, :log_environment, :precision
6
6
 
7
7
  # Time precision varies by Ruby interpreter
8
8
  # JRuby 9.1.8.0 supports microseconds
9
- PRECISION =
9
+ PRECISION =
10
10
  if defined?(JRuby)
11
11
  if JRUBY_VERSION.to_f >= 9.1
12
12
  maint = JRUBY_VERSION.match(/\A\d+\.\d+\.(\d+)\./)[1].to_i
@@ -34,11 +34,15 @@ module SemanticLogger
34
34
  # precision: [Integer]
35
35
  # How many fractional digits to log times with.
36
36
  # Default: PRECISION (6, except on older JRuby, where 3)
37
- def initialize(time_format: nil, log_host: true, log_application: true,
37
+ def initialize(time_format: nil,
38
+ log_host: true,
39
+ log_application: true,
40
+ log_environment: true,
38
41
  precision: PRECISION)
39
42
  @time_format = time_format || self.class.build_time_format(precision)
40
43
  @log_host = log_host
41
44
  @log_application = log_application
45
+ @log_environment = log_environment
42
46
  @precision = precision
43
47
  end
44
48
 
@@ -48,7 +52,7 @@ module SemanticLogger
48
52
  # precision: [Integer]
49
53
  # How many fractional digits to log times with.
50
54
  # Default: PRECISION (6, except on older JRuby, where 3)
51
- def self.build_time_format(precision=PRECISION)
55
+ def self.build_time_format(precision = PRECISION)
52
56
  "%Y-%m-%d %H:%M:%S.%#{precision}N"
53
57
  end
54
58
 
@@ -70,15 +70,10 @@ module SemanticLogger
70
70
  #
71
71
  # color_map: [Hash | SemanticLogger::Formatters::Color::ColorMap]
72
72
  # ColorMaps each of the log levels to a color
73
- def initialize(ap: {multiline: false},
74
- color_map: ColorMap.new,
75
- time_format: nil,
76
- log_host: false,
77
- log_application: false,
78
- precision: PRECISION)
73
+ def initialize(ap: {multiline: false}, color_map: ColorMap.new, **args)
79
74
  @ai_options = ap
80
75
  @color_map = color_map.is_a?(ColorMap) ? color_map : ColorMap.new(color_map)
81
- super(time_format: time_format, log_host: log_host, log_application: log_application, precision: precision)
76
+ super(**args)
82
77
  end
83
78
 
84
79
  def level
@@ -2,18 +2,18 @@ require 'json'
2
2
 
3
3
  module SemanticLogger
4
4
  module Formatters
5
- # Fluentd is similar to SemanticLogger::Formatters::Json but with log level that are recongnized
5
+ # Fluentd is similar to SemanticLogger::Formatters::Json but with log levels that are recognized
6
6
  # by kubernetes fluentd.
7
7
  class Fluentd < Json
8
8
  attr_reader :need_process_info
9
9
 
10
- def initialize(log_host: true, log_application: true, need_process_info: false)
10
+ def initialize(time_format: :rfc_3339, time_key: :time, need_process_info: false, **args)
11
11
  @need_process_info = need_process_info
12
- super(log_host: log_host, log_application: log_application, time_key: 'time', time_format: :rfc_3339)
12
+ super(time_format: time_format, time_key: time_key, **args)
13
13
  end
14
14
 
15
- def severity
16
- hash['severity'] = log.level
15
+ def level
16
+ hash['severity'] = log.level
17
17
  hash['severity_index'] = log.level_index
18
18
  end
19
19
 
@@ -21,17 +21,6 @@ module SemanticLogger
21
21
  # Ignore fields: pid, thread, file and line by default
22
22
  super() if need_process_info
23
23
  end
24
-
25
- def call(log, logger)
26
- self.hash = {}
27
- self.log = log
28
- self.logger = logger
29
-
30
- host; application; time; severity; process_info; duration; tags; named_tags; name; message; payload; exception; metric
31
- hash
32
-
33
- hash.to_json
34
- end
35
24
  end
36
25
  end
37
26
  end
@@ -3,10 +3,8 @@ module SemanticLogger
3
3
  module Formatters
4
4
  class Json < Raw
5
5
  # Default JSON time format is ISO8601
6
- def initialize(time_format: :iso_8601, log_host: true, log_application: true, time_key: :timestamp,
7
- precision: PRECISION)
8
- super(time_format: time_format, log_host: log_host, log_application: log_application, time_key: time_key,
9
- precision: precision)
6
+ def initialize(time_format: :iso_8601, time_key: :timestamp, **args)
7
+ super(time_format: time_format, time_key: time_key, **args)
10
8
  end
11
9
 
12
10
  # Returns log messages in JSON format
@@ -6,9 +6,9 @@ module SemanticLogger
6
6
  attr_accessor :hash, :log, :logger, :time_key
7
7
 
8
8
  # By default Raw formatter does not reformat the time
9
- def initialize(time_format: :none, log_host: true, log_application: true, time_key: :time, precision: PRECISION)
9
+ def initialize(time_format: :none, time_key: :time, **args)
10
10
  @time_key = time_key
11
- super(time_format: time_format, log_host: log_host, log_application: log_application, precision: precision)
11
+ super(time_format: time_format, **args)
12
12
  end
13
13
 
14
14
  # Host name
@@ -18,7 +18,12 @@ module SemanticLogger
18
18
 
19
19
  # Application name
20
20
  def application
21
- hash[:application] = logger.application if log_application && logger.application
21
+ hash[:application] = logger.application if log_application && logger && logger.application
22
+ end
23
+
24
+ # Environment
25
+ def environment
26
+ hash[:environment] = logger.environment if log_environment && logger && logger.environment
22
27
  end
23
28
 
24
29
  # Date & time
@@ -104,7 +109,7 @@ module SemanticLogger
104
109
  self.log = log
105
110
  self.logger = logger
106
111
 
107
- host; application; time; level; process_info; duration; tags; named_tags; name; message; payload; exception; metric
112
+ host; application; environment; time; level; process_info; duration; tags; named_tags; name; message; payload; exception; metric
108
113
  hash
109
114
  end
110
115
  end
@@ -2,29 +2,21 @@ require 'json'
2
2
  module SemanticLogger
3
3
  module Formatters
4
4
  class Signalfx < Base
5
- attr_accessor :token, :dimensions, :hash, :log, :logger, :gauge_name, :counter_name, :environment
5
+ attr_accessor :token, :dimensions, :hash, :log, :logger, :gauge_name, :counter_name
6
6
 
7
7
  def initialize(token:,
8
8
  dimensions: nil,
9
- log_host: true,
10
- log_application: true,
11
9
  gauge_name: 'Application.average',
12
10
  counter_name: 'Application.counter',
13
- environment: true,
14
- precision: PRECISION)
11
+ time_format: :ms,
12
+ **args)
15
13
 
16
14
  @token = token
17
15
  @dimensions = dimensions.map(&:to_sym) if dimensions
18
16
  @gauge_name = gauge_name
19
17
  @counter_name = counter_name
20
18
 
21
- if environment == true
22
- @environment = defined?(Rails) && Rails.respond_to?(:env) ? Rails.env : ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
23
- elsif environment
24
- @environment = environment
25
- end
26
-
27
- super(time_format: :ms, log_host: log_host, log_application: log_application, precision: precision)
19
+ super(time_format: time_format, **args)
28
20
  end
29
21
 
30
22
  # Create SignalFx friendly metric.
@@ -80,7 +72,7 @@ module SemanticLogger
80
72
  end
81
73
  h[:host] = logger.host if log_host && logger.host
82
74
  h[:application] = logger.application if log_application && logger.application
83
- h[:environment] = environment if environment
75
+ h[:environment] = logger.environment if log_environment && logger.environment
84
76
  end
85
77
 
86
78
  # Returns [Hash] log message in Signalfx format.
@@ -279,22 +279,6 @@ module SemanticLogger
279
279
  !(payload.nil? || (payload.respond_to?(:empty?) && payload.empty?))
280
280
  end
281
281
 
282
- # DEPRECATED
283
- alias has_payload? payload?
284
-
285
- # DEPRECATED
286
- def formatted_time
287
- time.strftime(Formatters::Base.build_time_format)
288
- end
289
-
290
- DeprecatedLogger = Struct.new(:host, :application)
291
-
292
- # DEPRECATED: Use SemanticLogger::Formatters::Raw
293
- def to_h(host = SemanticLogger.host, application = SemanticLogger.application)
294
- logger = DeprecatedLogger.new(host, application)
295
- SemanticLogger::Formatters::Raw.new.call(self, logger)
296
- end
297
-
298
282
  # Lazy initializes the context hash and assigns a key value pair.
299
283
  def set_context(key, value)
300
284
  (self.context ||= {})[key] = value
@@ -71,7 +71,19 @@ module SemanticLogger
71
71
  @application = application
72
72
  end
73
73
 
74
- @application = 'Semantic Logger'
74
+ # Returns [String] name of this environment for logging purposes
75
+ # Note: Not all appenders use `environment`
76
+ def self.environment
77
+ @environment
78
+ end
79
+
80
+ # Override the default environment
81
+ def self.environment=(environment)
82
+ @environment = environment
83
+ end
84
+
85
+ @application = ENV['SEMANTIC_LOGGER_APP'] || 'Semantic Logger'
86
+ @environment = ENV['SEMANTIC_LOGGER_ENV'] || ENV['RAILS_ENV'] || ENV['RACK_ENV']
75
87
 
76
88
  # Add a new logging appender as a new destination for all log messages
77
89
  # emitted from Semantic Logger
@@ -151,8 +163,8 @@ module SemanticLogger
151
163
  # logger = SemanticLogger['Example']
152
164
  # logger.info "Hello World"
153
165
  # logger.debug("Login time", user: 'Joe', duration: 100, ip_address: '127.0.0.1')
154
- def self.add_appender(options, deprecated_level = nil, &block)
155
- appender = Logger.processor.appenders.add(options, deprecated_level, &block)
166
+ def self.add_appender(**args, &block)
167
+ appender = Logger.processor.appenders.add(**args, &block)
156
168
  # Start appender thread if it is not already running
157
169
  Logger.processor.start
158
170
  appender
@@ -5,7 +5,7 @@ module SemanticLogger
5
5
  class Subscriber < SemanticLogger::Base
6
6
  # Every appender has its own formatter
7
7
  attr_reader :formatter
8
- attr_writer :application, :host, :logger, :metrics
8
+ attr_writer :application, :environment, :host, :logger, :metrics
9
9
 
10
10
  # Returns the current log level if set, otherwise it logs everything it receives.
11
11
  def level
@@ -32,6 +32,11 @@ module SemanticLogger
32
32
  @application || SemanticLogger.application
33
33
  end
34
34
 
35
+ # Allow environment name to be set globally or on a per subscriber basis.
36
+ def environment
37
+ @environment || SemanticLogger.environment
38
+ end
39
+
35
40
  # Allow host name to be set globally or on a per subscriber basis.
36
41
  def host
37
42
  @host || SemanticLogger.host
@@ -92,9 +97,10 @@ module SemanticLogger
92
97
  # metrics: [Boolean]
93
98
  # Whether to log metric only entries with this subscriber.
94
99
  # Default: false
95
- def initialize(level: nil, formatter: nil, filter: nil, application: nil, host: nil, metrics: false, &block)
100
+ def initialize(level: nil, formatter: nil, filter: nil, application: nil, environment: nil, host: nil, metrics: false, &block)
96
101
  self.formatter = block || formatter
97
102
  @application = application
103
+ @environment = environment
98
104
  @host = host
99
105
  @metrics = metrics
100
106
 
@@ -1,3 +1,3 @@
1
1
  module SemanticLogger
2
- VERSION = '4.5.0'.freeze
2
+ VERSION = '4.6.0.beta1'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semantic_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.5.0
4
+ version: 4.6.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-21 00:00:00.000000000 Z
11
+ date: 2019-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -102,11 +102,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
102
  version: '2.3'
103
103
  required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  requirements:
105
- - - ">="
105
+ - - ">"
106
106
  - !ruby/object:Gem::Version
107
- version: '0'
107
+ version: 1.3.1
108
108
  requirements: []
109
- rubygems_version: 3.0.2
109
+ rubygems_version: 3.0.3
110
110
  signing_key:
111
111
  specification_version: 4
112
112
  summary: Feature rich logging framework, and replacement for existing Ruby & Rails