betterlog 0.14.0 → 0.18.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: ca69ec750626ef4b6a76e40dcfb19bc1a9334410ee60b2714c611afb21a804c6
4
- data.tar.gz: 1ec3c97e0aac9f04452606c1af507c7102aac37033a8c371841435dcd152c6c7
3
+ metadata.gz: b4506f76d220e94df7933aa69c972215d14f74563f2fe87fa803223788fcfc8d
4
+ data.tar.gz: 98ca98c122cc33e647ebd3724df28eb02f151053f465f5014e86fec867f4cec5
5
5
  SHA512:
6
- metadata.gz: aecbebf1fe2fdb3a9341ac6c0e9704bb8c20161ffb3c76fc11d2de386345a6f8d4d96cd103e97dc115e1b290d9f63144ae130984626e53d87b2b91feadf0b7f3
7
- data.tar.gz: 01cab4c0d493f3b9ae5a884338121f1b758838709050e375c8d85a433bae129e9cb7d5c8ccd0664f8afa9a4fe99b3f8ad1513ee6b53f6853b745233cc18795ee
6
+ metadata.gz: 98516988066c8b36d09beca0b6d5bce79b65a146c0316ffdf4e01718e3c63fd2dab0f4690b933a144088845a5b1c36b8408cb9814eebed3c76e8768bc926ea77
7
+ data.tar.gz: 68e69a38f1389678e5e862c02b8e31e9d5863d4a47d2e343329372995fca4df442952d6302ed308ad41d9239f559b6473a74902f6f4ebf01f5014aa348ea92d4
@@ -0,0 +1,63 @@
1
+ version: v1.0
2
+ name: Betterlog pipeline
3
+ agent:
4
+ machine:
5
+ type: e1-standard-2
6
+ os_image: ubuntu1804
7
+
8
+ blocks:
9
+ - name: Caching
10
+ task:
11
+ prologue:
12
+ commands:
13
+ - checkout
14
+ jobs:
15
+ - name: cache bundle
16
+ commands:
17
+ - sem-version ruby 2.7.2
18
+ - cache restore gems-$SEMAPHORE_GIT_BRANCH,gems-master
19
+ - bundle config set path 'vendor/bundle'
20
+ - bundle config jobs $(getconf _NPROCESSORS_ONLN)
21
+ - bundle install
22
+ - cache store gems-$SEMAPHORE_GIT_BRANCH vendor/bundle
23
+
24
+ - name: "Unit tests"
25
+ task:
26
+ env_vars:
27
+ - name: RAILS_ENV
28
+ value: test
29
+ prologue:
30
+ commands:
31
+ - checkout
32
+
33
+ # Setup ruby
34
+ - sem-version ruby 2.7.2
35
+
36
+ # Setup gems
37
+ - cache restore gems-$SEMAPHORE_GIT_BRANCH,gems-master
38
+ - bundle config set path 'vendor/bundle'
39
+ - bundle config jobs $(getconf _NPROCESSORS_ONLN)
40
+ - bundle install
41
+
42
+ jobs:
43
+ - name: RSpec Unit Tests
44
+ commands:
45
+ - bundle exec rake
46
+
47
+ - name: Building Docker Image
48
+ task:
49
+
50
+ secrets:
51
+ - name: GCP
52
+
53
+ prologue:
54
+ commands:
55
+ - gcloud auth activate-service-account --key-file=.secrets/gcp.json
56
+ - gcloud auth configure-docker -q eu.gcr.io
57
+ - checkout
58
+
59
+ jobs:
60
+ - name: Building and pushing
61
+ commands:
62
+ - make build
63
+ - test -n "$SEMAPHORE_GIT_TAG_NAME" && make push-latest
data/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM alpine:3.12.0 AS builder
1
+ FROM alpine:3.13.2 AS builder
2
2
 
3
3
  # Update/Upgrade/Add packages for building
4
4
 
@@ -16,9 +16,9 @@ RUN make clobber
16
16
 
17
17
  RUN go get -u github.com/betterplace/go-init
18
18
 
19
- RUN make fetch all
19
+ RUN make setup all
20
20
 
21
- FROM alpine:3.12.0 AS runner
21
+ FROM alpine:3.13.2 AS runner
22
22
 
23
23
  # Update/Upgrade/Add packages
24
24
 
data/Makefile CHANGED
@@ -18,7 +18,7 @@ betterlog-server: cmd/betterlog-server/main.go betterlog/*.go
18
18
  local: betterlog-server
19
19
  REDIS_URL=$(REDIS_URL) ./betterlog-server
20
20
 
21
- fetch: fake-package
21
+ setup: fake-package
22
22
  go mod download
23
23
 
24
24
  fake-package:
data/Rakefile CHANGED
@@ -30,6 +30,7 @@ GemHadar do
30
30
  development_dependency 'rake'
31
31
  development_dependency 'rspec'
32
32
  development_dependency 'simplecov'
33
+ development_dependency 'mock_redis'
33
34
  end
34
35
 
35
36
  task :default => :spec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.14.0
1
+ 0.18.0
data/betterlog.gemspec CHANGED
@@ -1,22 +1,22 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: betterlog 0.14.0 ruby lib
2
+ # stub: betterlog 0.18.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "betterlog".freeze
6
- s.version = "0.14.0"
6
+ s.version = "0.18.0"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["betterplace Developers".freeze]
11
- s.date = "2020-07-30"
11
+ s.date = "2021-03-05"
12
12
  s.description = "This library provides structure json logging for our rails projects".freeze
13
13
  s.email = "developers@betterplace.org".freeze
14
14
  s.executables = ["betterlog".freeze, "betterlog_pusher".freeze, "betterlog_sink".freeze]
15
15
  s.extra_rdoc_files = ["README.md".freeze, "lib/betterlog.rb".freeze, "lib/betterlog/global_metadata.rb".freeze, "lib/betterlog/log.rb".freeze, "lib/betterlog/log/event.rb".freeze, "lib/betterlog/log/event_formatter.rb".freeze, "lib/betterlog/log/severity.rb".freeze, "lib/betterlog/log_event_formatter.rb".freeze, "lib/betterlog/logger.rb".freeze, "lib/betterlog/notifiers.rb".freeze, "lib/betterlog/railtie.rb".freeze, "lib/betterlog/version.rb".freeze]
16
- s.files = [".gitignore".freeze, ".travis.yml".freeze, "Dockerfile".freeze, "Gemfile".freeze, "LICENSE".freeze, "Makefile".freeze, "README.md".freeze, "Rakefile".freeze, "TODO.md".freeze, "VERSION".freeze, "betterlog.gemspec".freeze, "betterlog/config.go".freeze, "betterlog/healthz.go".freeze, "betterlog/redis_cert_cache.go".freeze, "bin/betterlog".freeze, "bin/betterlog_pusher".freeze, "bin/betterlog_sink".freeze, "cloudbuild.yaml".freeze, "cmd/betterlog-server/LICENSE".freeze, "cmd/betterlog-server/main.go".freeze, "config/log.yml".freeze, "go.mod".freeze, "go.sum".freeze, "lib/betterlog.rb".freeze, "lib/betterlog/global_metadata.rb".freeze, "lib/betterlog/log.rb".freeze, "lib/betterlog/log/event.rb".freeze, "lib/betterlog/log/event_formatter.rb".freeze, "lib/betterlog/log/severity.rb".freeze, "lib/betterlog/log_event_formatter.rb".freeze, "lib/betterlog/logger.rb".freeze, "lib/betterlog/notifiers.rb".freeze, "lib/betterlog/railtie.rb".freeze, "lib/betterlog/version.rb".freeze, "spec/betterlog/global_metadata_spec.rb".freeze, "spec/betterlog/log/event_spec.rb".freeze, "spec/betterlog/log/severity_spec.rb".freeze, "spec/betterlog/log_spec.rb".freeze, "spec/betterlog/logger_spec.rb".freeze, "spec/spec_helper.rb".freeze]
16
+ s.files = [".gitignore".freeze, ".semaphore/semaphore.yml".freeze, "Dockerfile".freeze, "Gemfile".freeze, "LICENSE".freeze, "Makefile".freeze, "README.md".freeze, "Rakefile".freeze, "TODO.md".freeze, "VERSION".freeze, "betterlog.gemspec".freeze, "betterlog/config.go".freeze, "betterlog/healthz.go".freeze, "betterlog/redis_cert_cache.go".freeze, "bin/betterlog".freeze, "bin/betterlog_pusher".freeze, "bin/betterlog_sink".freeze, "cloudbuild.yaml".freeze, "cmd/betterlog-server/LICENSE".freeze, "cmd/betterlog-server/main.go".freeze, "config/log.yml".freeze, "go.mod".freeze, "go.sum".freeze, "lib/betterlog.rb".freeze, "lib/betterlog/global_metadata.rb".freeze, "lib/betterlog/log.rb".freeze, "lib/betterlog/log/event.rb".freeze, "lib/betterlog/log/event_formatter.rb".freeze, "lib/betterlog/log/severity.rb".freeze, "lib/betterlog/log_event_formatter.rb".freeze, "lib/betterlog/logger.rb".freeze, "lib/betterlog/notifiers.rb".freeze, "lib/betterlog/railtie.rb".freeze, "lib/betterlog/version.rb".freeze, "spec/betterlog/global_metadata_spec.rb".freeze, "spec/betterlog/log/event_spec.rb".freeze, "spec/betterlog/log/severity_spec.rb".freeze, "spec/betterlog/log_spec.rb".freeze, "spec/betterlog/logger_spec.rb".freeze, "spec/spec_helper.rb".freeze]
17
17
  s.homepage = "http://github.com/betterplace/betterlog".freeze
18
18
  s.rdoc_options = ["--title".freeze, "Betterlog".freeze, "--main".freeze, "README.md".freeze]
19
- s.rubygems_version = "3.1.2".freeze
19
+ s.rubygems_version = "3.2.8".freeze
20
20
  s.summary = "Structured logging support for bp".freeze
21
21
  s.test_files = ["spec/betterlog/global_metadata_spec.rb".freeze, "spec/betterlog/log/event_spec.rb".freeze, "spec/betterlog/log/severity_spec.rb".freeze, "spec/betterlog/log_spec.rb".freeze, "spec/betterlog/logger_spec.rb".freeze, "spec/spec_helper.rb".freeze]
22
22
 
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
29
29
  s.add_development_dependency(%q<rake>.freeze, [">= 0"])
30
30
  s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
31
31
  s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
32
+ s.add_development_dependency(%q<mock_redis>.freeze, [">= 0"])
32
33
  s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.3", ">= 1.22.0"])
33
34
  s.add_runtime_dependency(%q<complex_config>.freeze, [">= 0"])
34
35
  s.add_runtime_dependency(%q<file-tail>.freeze, ["~> 1.0"])
@@ -42,6 +43,7 @@ Gem::Specification.new do |s|
42
43
  s.add_dependency(%q<rake>.freeze, [">= 0"])
43
44
  s.add_dependency(%q<rspec>.freeze, [">= 0"])
44
45
  s.add_dependency(%q<simplecov>.freeze, [">= 0"])
46
+ s.add_dependency(%q<mock_redis>.freeze, [">= 0"])
45
47
  s.add_dependency(%q<tins>.freeze, ["~> 1.3", ">= 1.22.0"])
46
48
  s.add_dependency(%q<complex_config>.freeze, [">= 0"])
47
49
  s.add_dependency(%q<file-tail>.freeze, ["~> 1.0"])
data/bin/betterlog CHANGED
@@ -96,10 +96,10 @@ module Betterlog
96
96
  return true unless @opts[?s]
97
97
  @opts[?s].all? do |param|
98
98
  case param
99
- when /:\?\z/
100
- event[$`].present?
101
- when /:([^:]+)\z/
102
- event[$`].full?(:include?, $1)
99
+ when /\A([^:]+):([^=]+)=(.+)\z/
100
+ event[$1]&.[]($2.to_sym)&.include?($3)
101
+ when /\A([^=]+)=(.+)\z/
102
+ event[$1]&.include?($2)
103
103
  when String
104
104
  event.to_json.include?(@opts[?s])
105
105
  else
data/lib/betterlog.rb CHANGED
@@ -1,9 +1,6 @@
1
1
  require 'tins/xt'
2
2
  require 'json'
3
- require 'logger'
4
- require 'time'
5
3
  require 'complex_config'
6
- require 'term/ansicolor'
7
4
 
8
5
  module Betterlog
9
6
  end
@@ -14,7 +11,6 @@ require 'betterlog/global_metadata'
14
11
  require 'betterlog/logger'
15
12
 
16
13
  if defined? Rails
17
- require 'betterlog/log_event_formatter'
18
14
  require 'betterlog/railtie'
19
15
  end
20
16
 
data/lib/betterlog/log.rb CHANGED
@@ -11,7 +11,7 @@ module Betterlog
11
11
 
12
12
  class_attr_accessor :default_logger
13
13
  self.default_logger = Logger.new(STDERR)
14
- if level = cc.log.level?
14
+ if level = cc.log?&.level?
15
15
  default_logger.level = level
16
16
  end
17
17
 
@@ -138,7 +138,7 @@ module Betterlog
138
138
  end
139
139
  event[:emitter] = self.class.name.downcase
140
140
  notify(event)
141
- logger.send(event.severity.to_sym, event.to_json)
141
+ logger.send(event.severity.to_sym, JSON.generate(event))
142
142
  self
143
143
  ensure
144
144
  GlobalMetadata.data.clear
@@ -75,11 +75,19 @@ module Betterlog
75
75
  end
76
76
 
77
77
  def to_json(*a)
78
- as_json.to_json(*a)
78
+ JSON.generate(as_json)
79
+ rescue
80
+ # Sometimes rails logging messages contain invalid utf-8 characters
81
+ # generating various standard errors. Let's fallback to a barebones
82
+ # event with just a cleaned up message for these cases.
83
+ JSON.generate({
84
+ severity: @data[:severity],
85
+ message: @data.fetch(:message, '').encode('utf-8', invalid: :replace, undef: :replace, replace: ''),
86
+ })
79
87
  end
80
88
 
81
- def format(*args)
82
- Log::EventFormatter.new(self).format(*args)
89
+ def format(**args)
90
+ Log::EventFormatter.new(self).format(**args)
83
91
  end
84
92
 
85
93
  alias to_s format
@@ -1,3 +1,6 @@
1
+ require 'time'
2
+ require 'term/ansicolor'
3
+
1
4
  module Betterlog
2
5
  class Log
3
6
  class EventFormatter
@@ -15,7 +18,7 @@ module Betterlog
15
18
  when :format
16
19
  format_pattern(format: format)
17
20
  else
18
- @event.to_json
21
+ JSON.generate(@event)
19
22
  end
20
23
  ensure
21
24
  Term::ANSIColor.coloring = old_coloring
@@ -1,3 +1,5 @@
1
+ require 'logger'
2
+
1
3
  module Betterlog
2
4
  class Log
3
5
  class Severity
@@ -36,7 +36,7 @@ module Betterlog
36
36
  event[:location] = [ l.absolute_path, l.lineno ] * ?:
37
37
  end
38
38
  program and event[:program] = program
39
- message = event.to_json
39
+ message = JSON.generate(event)
40
40
  end
41
41
  end
42
42
  rescue => e
@@ -1,4 +1,8 @@
1
- require 'redis'
1
+ begin
2
+ require 'redis' unless defined?(Redis)
3
+ rescue LoadError
4
+ end
5
+ require 'logger'
2
6
 
3
7
  module Betterlog
4
8
  class Logger < ::Logger
@@ -1,6 +1,7 @@
1
1
  module Betterlog
2
2
  class Railtie < Rails::Railtie
3
3
  initializer "betterlog_railtie.configure_rails_initialization" do
4
+ require 'betterlog/log_event_formatter'
4
5
  Rails.logger.formatter = Betterlog::LogEventFormatter.new
5
6
  end
6
7
  end
@@ -1,6 +1,6 @@
1
1
  module Betterlog
2
2
  # Betterlog version
3
- VERSION = '0.14.0'
3
+ VERSION = '0.18.0'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -26,6 +26,17 @@ describe Betterlog::Log do
26
26
  end
27
27
  end
28
28
 
29
+ describe 'Log::Event.to_json' do
30
+ it 'can be called' do
31
+ expect(event.to_json).to be_present
32
+ end
33
+
34
+ it 'can handle invalid UTF-8 characters' do
35
+ event = Log::Event.ify("foo\xCEbar")
36
+ expect(event.to_json).to eq(JSON(severity: "DEBUG", message: 'foobar'))
37
+ end
38
+ end
39
+
29
40
  describe '.parse' do
30
41
  it 'can parse an event as a JSON document' do
31
42
  expect(Log::Event.parse(event.to_json)).to eq event
data/spec/spec_helper.rb CHANGED
@@ -9,5 +9,11 @@ begin
9
9
  require 'byebug'
10
10
  rescue LoadError
11
11
  end
12
+ require 'mock_redis'
13
+ class MockRedis
14
+ class BaseConnectionError < StandardError; end
15
+ class CannotConnectError < BaseConnectionError; end
16
+ end
17
+ Redis=MockRedis
12
18
  require 'betterlog'
13
19
  Betterlog::Log.default_logger = Logger.new(nil)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: betterlog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - betterplace Developers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-30 00:00:00.000000000 Z
11
+ date: 2021-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mock_redis
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'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: tins
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -206,7 +220,7 @@ extra_rdoc_files:
206
220
  - lib/betterlog/version.rb
207
221
  files:
208
222
  - ".gitignore"
209
- - ".travis.yml"
223
+ - ".semaphore/semaphore.yml"
210
224
  - Dockerfile
211
225
  - Gemfile
212
226
  - LICENSE
@@ -267,7 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
267
281
  - !ruby/object:Gem::Version
268
282
  version: '0'
269
283
  requirements: []
270
- rubygems_version: 3.1.2
284
+ rubygems_version: 3.2.8
271
285
  signing_key:
272
286
  specification_version: 4
273
287
  summary: Structured logging support for bp
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- rvm:
2
- - 2.6
3
- - 2.7
4
- sudo: false
5
- services:
6
- - redis-server