betterlog 0.12.2 → 0.15.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 +4 -4
- data/.semaphore/semaphore.yml +60 -0
- data/Dockerfile +3 -5
- data/Makefile +5 -9
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/betterlog.gemspec +7 -5
- data/bin/betterlog_sink +3 -3
- data/cloudbuild.yaml +1 -3
- data/lib/betterlog.rb +1 -4
- data/lib/betterlog/log.rb +5 -1
- data/lib/betterlog/log/event_formatter.rb +4 -0
- data/lib/betterlog/log/severity.rb +2 -0
- data/lib/betterlog/log_event_formatter.rb +1 -0
- data/lib/betterlog/logger.rb +17 -4
- data/lib/betterlog/railtie.rb +1 -0
- data/lib/betterlog/version.rb +1 -1
- data/spec/spec_helper.rb +6 -0
- metadata +21 -7
- data/.travis.yml +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 12593a18d28fc916e5c30257103937523a972f44a588087dd929742d99043b37
|
4
|
+
data.tar.gz: d0db15ffbe77f7f088c61c073c72a6847a79b07fd9c7f075fa4b8acdfdedaf50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e1b2ff2e6ac4bbe60eefcf48755e143fda9eb122c3392a9cba45e8996df5473903f4bb2a36bb657b1a80acf451215bf377782a33ba447ac61bad5ee7723644f
|
7
|
+
data.tar.gz: fca5f361f59320ed444e87f49a620a19b6e9a8d446b1e5c2e8255249915ffbe705787a660cf687c265105c60e24e9768ac427f360b18dafb4b282bf827aa7407
|
@@ -0,0 +1,60 @@
|
|
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 jobs $(getconf _NPROCESSORS_ONLN)
|
20
|
+
- bundle install
|
21
|
+
- cache store gems-$SEMAPHORE_GIT_BRANCH vendor/bundle
|
22
|
+
|
23
|
+
- name: "Unit tests"
|
24
|
+
task:
|
25
|
+
env_vars:
|
26
|
+
- name: RAILS_ENV
|
27
|
+
value: test
|
28
|
+
prologue:
|
29
|
+
commands:
|
30
|
+
- checkout
|
31
|
+
|
32
|
+
# Setup ruby
|
33
|
+
- sem-version ruby 2.7.2
|
34
|
+
|
35
|
+
# Setup gems
|
36
|
+
- cache restore gems-$SEMAPHORE_GIT_BRANCH,gems-master
|
37
|
+
- bundle config jobs $(getconf _NPROCESSORS_ONLN)
|
38
|
+
- bundle install
|
39
|
+
|
40
|
+
jobs:
|
41
|
+
- name: RSpec Unit Tests
|
42
|
+
commands:
|
43
|
+
- rake
|
44
|
+
|
45
|
+
- name: Building Docker Image
|
46
|
+
task:
|
47
|
+
|
48
|
+
secrets:
|
49
|
+
- name: GCP
|
50
|
+
|
51
|
+
prologue:
|
52
|
+
commands:
|
53
|
+
- gcloud auth activate-service-account --key-file=.secrets/gcp.json
|
54
|
+
- gcloud auth configure-docker -q
|
55
|
+
- checkout
|
56
|
+
|
57
|
+
jobs:
|
58
|
+
- name: Building and pushing
|
59
|
+
commands:
|
60
|
+
- make build push-latest
|
data/Dockerfile
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
FROM ${BASE_IMAGE} AS builder
|
1
|
+
FROM alpine:3.12.1 AS builder
|
4
2
|
|
5
3
|
# Update/Upgrade/Add packages for building
|
6
4
|
|
@@ -18,9 +16,9 @@ RUN make clobber
|
|
18
16
|
|
19
17
|
RUN go get -u github.com/betterplace/go-init
|
20
18
|
|
21
|
-
RUN make
|
19
|
+
RUN make setup all
|
22
20
|
|
23
|
-
FROM
|
21
|
+
FROM alpine:3.12.1 AS runner
|
24
22
|
|
25
23
|
# Update/Upgrade/Add packages
|
26
24
|
|
data/Makefile
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# Pass BASE_IMAGE=alpine:3.13.3
|
2
1
|
DOCKER_IMAGE_LATEST = betterlog
|
3
2
|
DOCKER_IMAGE = $(DOCKER_IMAGE_LATEST):$(REVISION_SHORT)
|
4
3
|
PROJECT_ID = betterplace-183212
|
@@ -19,7 +18,7 @@ betterlog-server: cmd/betterlog-server/main.go betterlog/*.go
|
|
19
18
|
local: betterlog-server
|
20
19
|
REDIS_URL=$(REDIS_URL) ./betterlog-server
|
21
20
|
|
22
|
-
|
21
|
+
setup: fake-package
|
23
22
|
go mod download
|
24
23
|
|
25
24
|
fake-package:
|
@@ -48,15 +47,12 @@ tags: clean
|
|
48
47
|
build-info:
|
49
48
|
@echo $(DOCKER_IMAGE)
|
50
49
|
|
51
|
-
|
52
|
-
docker
|
53
|
-
|
54
|
-
build: pull-base
|
55
|
-
docker build -t $(DOCKER_IMAGE) --build-arg=BASE_IMAGE=$(BASE_IMAGE) .
|
50
|
+
build:
|
51
|
+
docker build -t $(DOCKER_IMAGE) .
|
56
52
|
$(MAKE) build-info
|
57
53
|
|
58
|
-
build-force:
|
59
|
-
docker build -t $(DOCKER_IMAGE) --
|
54
|
+
build-force:
|
55
|
+
docker build -t $(DOCKER_IMAGE) --no-cache .
|
60
56
|
$(MAKE) build-info
|
61
57
|
|
62
58
|
debug:
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.15.0
|
data/betterlog.gemspec
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: betterlog 0.
|
2
|
+
# stub: betterlog 0.15.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "betterlog".freeze
|
6
|
-
s.version = "0.
|
6
|
+
s.version = "0.15.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-
|
11
|
+
s.date = "2020-11-02"
|
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, ".
|
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.
|
19
|
+
s.rubygems_version = "3.1.4".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_sink
CHANGED
@@ -7,14 +7,14 @@ require 'json'
|
|
7
7
|
|
8
8
|
LOG_ENV = ENV.fetch('LOG_ENV', 'production')
|
9
9
|
|
10
|
+
@config = complex_config.log(LOG_ENV).sink
|
11
|
+
|
10
12
|
ENV['KUBECONFIG'] = File.join(
|
11
13
|
ENV.fetch('HOME'),
|
12
14
|
'.kube',
|
13
|
-
|
15
|
+
@config.cluster.name
|
14
16
|
)
|
15
17
|
|
16
|
-
@config = complex_config.log(LOG_ENV).sink
|
17
|
-
|
18
18
|
def authenticate
|
19
19
|
return if File.exist?(ENV['KUBECONFIG'])
|
20
20
|
context = [
|
data/cloudbuild.yaml
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
steps:
|
2
2
|
- name: eu.gcr.io/betterplace-183212/better-builder
|
3
|
-
args: ['
|
4
|
-
- name: eu.gcr.io/betterplace-183212/better-builder
|
5
|
-
args: ['build', '-t', 'eu.gcr.io/$PROJECT_ID/${_IMAGE_NAME}:$SHORT_SHA', '-t', 'eu.gcr.io/$PROJECT_ID/${_IMAGE_NAME}', '--build-arg=BASE_IMAGE=${_BASE_IMAGE}', '.']
|
3
|
+
args: ['build', '-t', 'eu.gcr.io/$PROJECT_ID/${_IMAGE_NAME}:$SHORT_SHA', '-t', 'eu.gcr.io/$PROJECT_ID/${_IMAGE_NAME}', '.']
|
6
4
|
images:
|
7
5
|
- 'eu.gcr.io/$PROJECT_ID/${_IMAGE_NAME}:$SHORT_SHA'
|
8
6
|
- 'eu.gcr.io/$PROJECT_ID/${_IMAGE_NAME}'
|
data/lib/betterlog.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'tins/xt'
|
2
2
|
require 'json'
|
3
|
-
require '
|
4
|
-
require 'time'
|
5
|
-
require 'term/ansicolor'
|
3
|
+
require 'complex_config'
|
6
4
|
|
7
5
|
module Betterlog
|
8
6
|
end
|
@@ -13,7 +11,6 @@ require 'betterlog/global_metadata'
|
|
13
11
|
require 'betterlog/logger'
|
14
12
|
|
15
13
|
if defined? Rails
|
16
|
-
require 'betterlog/log_event_formatter'
|
17
14
|
require 'betterlog/railtie'
|
18
15
|
end
|
19
16
|
|
data/lib/betterlog/log.rb
CHANGED
@@ -7,12 +7,16 @@ require 'betterlog/log/severity'
|
|
7
7
|
module Betterlog
|
8
8
|
class Log
|
9
9
|
include Tins::SexySingleton
|
10
|
+
extend ComplexConfig::Provider::Shortcuts
|
10
11
|
|
11
12
|
class_attr_accessor :default_logger
|
12
13
|
self.default_logger = Logger.new(STDERR)
|
14
|
+
if level = cc.log?&.level?
|
15
|
+
default_logger.level = level
|
16
|
+
end
|
13
17
|
|
14
18
|
def logger
|
15
|
-
defined?(Rails) && Rails.respond_to?(:logger) ? Rails.logger :
|
19
|
+
defined?(Rails) && Rails.respond_to?(:logger) ? Rails.logger : self.class.default_logger
|
16
20
|
end
|
17
21
|
|
18
22
|
# Logs a message on severity info.
|
data/lib/betterlog/logger.rb
CHANGED
@@ -1,10 +1,20 @@
|
|
1
|
-
|
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
|
9
|
+
include ComplexConfig::Provider::Shortcuts
|
10
|
+
|
5
11
|
def initialize(redis, shift_age = 0, shift_size = 1048576, name: nil, buffer_size: nil, **opts)
|
6
12
|
@redis = redis
|
7
13
|
@fallback = ::Logger.new(STDERR)
|
14
|
+
if level = cc.log.level?
|
15
|
+
self.level = level
|
16
|
+
@fallback.level = level
|
17
|
+
end
|
8
18
|
@name = name || self.class.name
|
9
19
|
@buffer_size = determine_buffer_size(buffer_size)
|
10
20
|
super(nil, shift_age, shift_size, **opts)
|
@@ -83,7 +93,7 @@ module Betterlog
|
|
83
93
|
rescue Redis::BaseConnectionError
|
84
94
|
end
|
85
95
|
|
86
|
-
@redis.exists(@name) or return Enumerator.new {}
|
96
|
+
@redis.exists?(@name) or return Enumerator.new {}
|
87
97
|
|
88
98
|
Enumerator.new do |y|
|
89
99
|
name_tmp = "#{@name}_#{rand}"
|
@@ -92,7 +102,9 @@ module Betterlog
|
|
92
102
|
s = 0
|
93
103
|
e = @redis.strlen(name_tmp) - 1
|
94
104
|
until s > e
|
95
|
-
|
105
|
+
range = @redis.getrange(name_tmp, s, s + chunk_size - 1)
|
106
|
+
range.force_encoding 'ASCII-8BIT'
|
107
|
+
y.yield range
|
96
108
|
s += chunk_size
|
97
109
|
end
|
98
110
|
|
@@ -115,9 +127,10 @@ module Betterlog
|
|
115
127
|
chunk_size > 0 or raise ArgumentError, 'chunk_size > 0 required'
|
116
128
|
Enumerator.new do |y|
|
117
129
|
buffer = ''
|
130
|
+
buffer.encode! 'ASCII-8BIT'
|
118
131
|
each_chunk(chunk_size: chunk_size) do |chunk|
|
119
132
|
buffer << chunk
|
120
|
-
buffer.gsub!(/\A(.*?#$/)/) do |line|
|
133
|
+
buffer.gsub!(/\A(.*?#$/)/n) do |line|
|
121
134
|
y.yield(line)
|
122
135
|
''
|
123
136
|
end
|
data/lib/betterlog/railtie.rb
CHANGED
data/lib/betterlog/version.rb
CHANGED
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.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- betterplace Developers
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-02 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
|
-
- ".
|
223
|
+
- ".semaphore/semaphore.yml"
|
210
224
|
- Dockerfile
|
211
225
|
- Gemfile
|
212
226
|
- LICENSE
|
@@ -248,7 +262,7 @@ files:
|
|
248
262
|
homepage: http://github.com/betterplace/betterlog
|
249
263
|
licenses: []
|
250
264
|
metadata: {}
|
251
|
-
post_install_message:
|
265
|
+
post_install_message:
|
252
266
|
rdoc_options:
|
253
267
|
- "--title"
|
254
268
|
- Betterlog
|
@@ -267,8 +281,8 @@ 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.
|
271
|
-
signing_key:
|
284
|
+
rubygems_version: 3.1.4
|
285
|
+
signing_key:
|
272
286
|
specification_version: 4
|
273
287
|
summary: Structured logging support for bp
|
274
288
|
test_files:
|