manageiq-loggers 1.0.1 → 1.1.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: d411d75a73f5d47de3de8080101e168c99265168eb34beef036a173955aa9823
4
- data.tar.gz: '06163649ad33e5964c5d06f3ab369a1fa0e2fd9cf08d71ca70d0a14da6978420'
3
+ metadata.gz: b3074101daa2ad9391018a2bd3d9eb9c14588ec5872ffdf8fb6a3a88b119baaa
4
+ data.tar.gz: 045bc78b9f4c4b97d2c3d7e2e45351025607100dff861397b42dba135a495334
5
5
  SHA512:
6
- metadata.gz: 84de0b21346b0bc7d805ee5987e6575eee4e7f2b405dea90454d5f41443b0b9ec80282fad209c26b3dbd63f9d69c18159eae5e65b1aac7f3722adf1685da6358
7
- data.tar.gz: 52d917bf352a7df54e4993d043a7b9dd1f53e79f4c55456759dc3e850f9d66e30c49fb40cfa90e5b293099a00e03600cbb6ff11e0cc9ed82370a7ee94f4d592e
6
+ metadata.gz: 2b3675dd8cb799c3b830bb2683303b153e0d01b1a4ebd6b32e6d8b056d8df5bc76e9fd643fac317fcf0090f22ea7ea19935acd5ec90246e7e03b8e69597d063b
7
+ data.tar.gz: defb9aa94eb27dfd54bb3dab055a7801daf3e282ca2a62f5706008788d3d54c6fc290ac382c2bcd54ac80667b05d6e44d2e1f5b4401523ff5e6e5b9af06e956b
@@ -0,0 +1,33 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+ schedule:
7
+ - cron: '0 0 * * 0'
8
+
9
+ jobs:
10
+ ci:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby-version:
15
+ - '2.6'
16
+ - '2.7'
17
+ - '3.0'
18
+ env:
19
+ CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
20
+ steps:
21
+ - uses: actions/checkout@v2
22
+ - name: Set up Ruby
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: ${{ matrix.ruby-version }}
26
+ bundler-cache: true
27
+ timeout-minutes: 30
28
+ - name: Run tests
29
+ run: bundle exec rake
30
+ - name: Report code coverage
31
+ if: ${{ github.ref == 'refs/heads/master' && matrix.ruby-version == '3.0' }}
32
+ continue-on-error: true
33
+ uses: paambaati/codeclimate-action@v3.0.0
data/.rspec CHANGED
@@ -1,4 +1,3 @@
1
- --format progress
1
+ --require spec_helper
2
2
  --color
3
3
  --order random
4
- --require spec_helper
data/.whitesource ADDED
@@ -0,0 +1,3 @@
1
+ {
2
+ "settingsInheritedFrom": "ManageIQ/whitesource-config@master"
3
+ }
data/CHANGELOG.md CHANGED
@@ -5,6 +5,14 @@ This project adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.1.0] - 2022-11-14
9
+ ### Changed
10
+ - Split out JSON logger from Container logger [(#49)](https://github.com/ManageIQ/manageiq-loggers/pull/49)
11
+ - Allow passing the CloudWatch logger's configuration as kwargs [(#50)](https://github.com/ManageIQ/manageiq-loggers/pull/50)
12
+
13
+ ### Fixed
14
+ - Remove timestamp whitespace in container logger formatter [(#47)](https://github.com/ManageIQ/manageiq-loggers/pull/47)
15
+
8
16
  ## [1.0.1] - 2021-01-05
9
17
  ### Fixed
10
18
  - Fix require issue when used with Rails 7 [(#42)](https://github.com/ManageIQ/manageiq-loggers/pull/42)
@@ -75,7 +83,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
75
83
 
76
84
  ## [0.1.0] - 2019-01-08
77
85
 
78
- [Unreleased]: https://github.com/ManageIQ/manageiq-loggers/compare/v1.0.1...master
86
+ [Unreleased]: https://github.com/ManageIQ/manageiq-loggers/compare/v1.1.0...master
87
+ [1.1.0]: https://github.com/ManageIQ/manageiq-loggers/compare/v1.0.1...v1.1.0
79
88
  [1.0.1]: https://github.com/ManageIQ/manageiq-loggers/compare/v1.0.0...v1.0.1
80
89
  [1.0.0]: https://github.com/ManageIQ/manageiq-loggers/compare/v0.8.0...v1.0.0
81
90
  [0.8.0]: https://github.com/ManageIQ/manageiq-loggers/compare/v0.7.0...v0.8.0
data/Gemfile CHANGED
@@ -1,6 +1,4 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
-
5
3
  # Specify your gem's dependencies in manageiq-loggers.gemspec
6
4
  gemspec
data/README.md CHANGED
@@ -1,9 +1,8 @@
1
1
  # ManageIQ::Loggers
2
2
 
3
- [![Build Status](https://app.travis-ci.com/ManageIQ/manageiq-loggers.svg?branch=master)](https://app.travis-ci.com/ManageIQ/manageiq-loggers)
3
+ [![CI](https://github.com/ManageIQ/manageiq-loggers/actions/workflows/ci.yaml/badge.svg)](https://github.com/ManageIQ/manageiq-loggers/actions/workflows/ci.yaml)
4
4
  [![Maintainability](https://api.codeclimate.com/v1/badges/8d3c9bf77c45a024166b/maintainability)](https://codeclimate.com/github/ManageIQ/manageiq-loggers/maintainability)
5
5
  [![Test Coverage](https://api.codeclimate.com/v1/badges/8d3c9bf77c45a024166b/test_coverage)](https://codeclimate.com/github/ManageIQ/manageiq-loggers/test_coverage)
6
- [![Security](https://hakiri.io/github/ManageIQ/manageiq-loggers/master.svg)](https://hakiri.io/github/ManageIQ/manageiq-loggers/master)
7
6
 
8
7
  Loggers for ManageIQ projects
9
8
 
@@ -7,19 +7,19 @@ module ManageIQ
7
7
  class CloudWatch < Base
8
8
  NAMESPACE_FILE = "/var/run/secrets/kubernetes.io/serviceaccount/namespace".freeze
9
9
 
10
- def self.new(*args)
11
- access_key_id = ENV["CW_AWS_ACCESS_KEY_ID"].presence
12
- secret_access_key = ENV["CW_AWS_SECRET_ACCESS_KEY"].presence
13
- log_group_name = ENV["CLOUD_WATCH_LOG_GROUP"].presence
14
- log_stream_name = ENV["HOSTNAME"].presence
10
+ def self.new(*args, access_key_id: nil, secret_access_key: nil, log_group: nil, log_stream: nil)
11
+ access_key_id ||= ENV["CW_AWS_ACCESS_KEY_ID"].presence
12
+ secret_access_key ||= ENV["CW_AWS_SECRET_ACCESS_KEY"].presence
13
+ log_group ||= ENV["CLOUD_WATCH_LOG_GROUP"].presence
14
+ log_stream ||= ENV["HOSTNAME"].presence
15
15
 
16
16
  container_logger = ManageIQ::Loggers::Container.new
17
- return container_logger unless access_key_id && secret_access_key && log_group_name && log_stream_name
17
+ return container_logger unless access_key_id && secret_access_key && log_group && log_stream
18
18
 
19
19
  require 'cloudwatchlogger'
20
20
 
21
21
  creds = {:access_key_id => access_key_id, :secret_access_key => secret_access_key}
22
- cloud_watch_logdev = CloudWatchLogger::Client.new(creds, log_group_name, log_stream_name)
22
+ cloud_watch_logdev = CloudWatchLogger::Client.new(creds, log_group, log_stream)
23
23
  super(cloud_watch_logdev).tap { |logger| logger.extend(ActiveSupport::Logger.broadcast(container_logger)) }
24
24
  end
25
25
 
@@ -1,79 +1,14 @@
1
1
  module ManageIQ
2
2
  module Loggers
3
- class Container < Base
4
- def initialize(logdev = STDOUT, *args)
3
+ class Container < JSONLogger
4
+ def initialize(logdev = $stdout, *_, **_)
5
5
  logdev.sync = true # Don't buffer container log output
6
-
7
6
  super
8
-
9
- self.formatter = Formatter.new
10
7
  end
11
8
 
12
9
  def filename
13
10
  "STDOUT"
14
11
  end
15
-
16
- class Formatter < Base::Formatter
17
- SEVERITY_MAP = {
18
- "DEBUG" => "debug",
19
- "INFO" => "info",
20
- "WARN" => "warning",
21
- "ERROR" => "err",
22
- "FATAL" => "crit",
23
- "UNKNOWN" => "unknown"
24
- # Others that don't match up: alert emerg notice trace
25
- }.freeze
26
-
27
- def initialize
28
- super
29
- require 'json'
30
- end
31
-
32
- def call(severity, time, progname, msg)
33
- # From https://github.com/ViaQ/elasticsearch-templates/releases -> Downloads -> *.asciidoc
34
- # NOTE: These values are in a specific order for easier human readbility via STDOUT
35
- payload = {
36
- :@timestamp => format_datetime(time),
37
- :hostname => hostname,
38
- :pid => $PROCESS_ID,
39
- :tid => thread_id,
40
- :service => progname,
41
- :level => translate_error(severity),
42
- :message => prefix_task_id(msg2str(msg)),
43
- :request_id => request_id
44
- # :tags => "tags string",
45
- }.compact
46
- JSON.generate(payload) << "\n"
47
- rescue Encoding::UndefinedConversionError
48
- raise unless msg.encoding == Encoding::ASCII_8BIT
49
-
50
- msg.force_encoding("UTF-8")
51
- retry
52
- end
53
-
54
- private
55
-
56
- def hostname
57
- @hostname ||= ENV["HOSTNAME"]
58
- end
59
-
60
- def thread_id
61
- Thread.current.object_id.to_s(16)
62
- end
63
-
64
- def translate_error(level)
65
- SEVERITY_MAP[level] || "unknown"
66
- end
67
-
68
- def request_id
69
- Thread.current[:request_id] || Thread.current[:current_request]&.request_id.tap do |request_id|
70
- if request_id
71
- require "active_support/deprecation"
72
- ActiveSupport::Deprecation.warn("Usage of `Thread.current[:current_request]&.request_id` will be deprecated in version 0.5.0. Please switch to `Thread.current[:request_id]` to log request_id automatically.")
73
- end
74
- end
75
- end
76
- end
77
12
  end
78
13
  end
79
14
  end
@@ -0,0 +1,77 @@
1
+ module ManageIQ
2
+ module Loggers
3
+ class JSONLogger < Base
4
+ def initialize(*_, **_)
5
+ super
6
+ self.formatter = Formatter.new
7
+ end
8
+
9
+ class Formatter < Base::Formatter
10
+ SEVERITY_MAP = {
11
+ "DEBUG" => "debug",
12
+ "INFO" => "info",
13
+ "WARN" => "warning",
14
+ "ERROR" => "err",
15
+ "FATAL" => "crit",
16
+ "UNKNOWN" => "unknown"
17
+ # Others that don't match up: alert emerg notice trace
18
+ }.freeze
19
+
20
+ def initialize
21
+ super
22
+ require 'json'
23
+ end
24
+
25
+ def call(severity, time, progname, msg)
26
+ # From https://github.com/ViaQ/elasticsearch-templates/releases -> Downloads -> *.asciidoc
27
+ # NOTE: These values are in a specific order for easier human readbility via STDOUT
28
+ payload = {
29
+ :@timestamp => format_datetime(time),
30
+ :hostname => hostname,
31
+ :pid => $PROCESS_ID,
32
+ :tid => thread_id,
33
+ :service => progname,
34
+ :level => translate_error(severity),
35
+ :message => prefix_task_id(msg2str(msg)),
36
+ :request_id => request_id
37
+ # :tags => "tags string",
38
+ }.compact
39
+ JSON.generate(payload) << "\n"
40
+ rescue Encoding::UndefinedConversionError
41
+ raise unless msg.encoding == Encoding::ASCII_8BIT
42
+
43
+ msg.force_encoding("UTF-8")
44
+ retry
45
+ end
46
+
47
+ private
48
+
49
+ def format_datetime(*)
50
+ super.rstrip
51
+ end
52
+
53
+ def hostname
54
+ @hostname ||= ENV["HOSTNAME"]
55
+ end
56
+
57
+ def thread_id
58
+ Thread.current.object_id.to_s(16)
59
+ end
60
+
61
+ def translate_error(level)
62
+ SEVERITY_MAP[level] || "unknown"
63
+ end
64
+
65
+ def request_id
66
+ Thread.current[:request_id] || Thread.current[:current_request]&.request_id.tap do |request_id|
67
+ if request_id
68
+ require "active_support"
69
+ require "active_support/deprecation"
70
+ ActiveSupport::Deprecation.warn("Usage of `Thread.current[:current_request]&.request_id` will be deprecated in version 0.5.0. Please switch to `Thread.current[:request_id]` to log request_id automatically.")
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -1,5 +1,5 @@
1
1
  module ManageIQ
2
2
  module Loggers
3
- VERSION = "1.0.1".freeze
3
+ VERSION = "1.1.0".freeze
4
4
  end
5
5
  end
@@ -1,5 +1,8 @@
1
1
  require "manageiq/loggers/base"
2
+ require "manageiq/loggers/json_logger"
3
+
2
4
  require "manageiq/loggers/cloud_watch"
3
5
  require "manageiq/loggers/container"
4
6
  require "manageiq/loggers/journald"
7
+
5
8
  require "manageiq/loggers/version"
@@ -1,4 +1,3 @@
1
-
2
1
  lib = File.expand_path("../lib", __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require "manageiq/loggers/version"
@@ -30,6 +29,6 @@ Gem::Specification.new do |spec|
30
29
  spec.add_development_dependency "manageiq-style"
31
30
  spec.add_development_dependency "rake", ">= 12.3.3"
32
31
  spec.add_development_dependency "rspec", "~> 3.0"
33
- spec.add_development_dependency "simplecov"
32
+ spec.add_development_dependency "simplecov", ">= 0.21.2"
34
33
  spec.add_development_dependency "systemd-journal" if RbConfig::CONFIG['host_os'] =~ /linux/i
35
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manageiq-loggers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ManageIQ Authors
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-05 00:00:00.000000000 Z
11
+ date: 2022-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 0.21.2
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: '0'
124
+ version: 0.21.2
125
125
  description:
126
126
  email:
127
127
  executables: []
@@ -129,12 +129,13 @@ extensions: []
129
129
  extra_rdoc_files: []
130
130
  files:
131
131
  - ".codeclimate.yml"
132
+ - ".github/workflows/ci.yaml"
132
133
  - ".gitignore"
133
134
  - ".rspec"
134
135
  - ".rubocop.yml"
135
136
  - ".rubocop_cc.yml"
136
137
  - ".rubocop_local.yml"
137
- - ".travis.yml"
138
+ - ".whitesource"
138
139
  - CHANGELOG.md
139
140
  - Gemfile
140
141
  - LICENSE.txt
@@ -148,6 +149,7 @@ files:
148
149
  - lib/manageiq/loggers/cloud_watch.rb
149
150
  - lib/manageiq/loggers/container.rb
150
151
  - lib/manageiq/loggers/journald.rb
152
+ - lib/manageiq/loggers/json_logger.rb
151
153
  - lib/manageiq/loggers/version.rb
152
154
  - manageiq-loggers.gemspec
153
155
  homepage: https://github.com/ManageIQ/manageiq-loggers
@@ -169,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
171
  - !ruby/object:Gem::Version
170
172
  version: '0'
171
173
  requirements: []
172
- rubygems_version: 3.1.6
174
+ rubygems_version: 3.3.18
173
175
  signing_key:
174
176
  specification_version: 4
175
177
  summary: Loggers for ManageIQ projects
data/.travis.yml DELETED
@@ -1,14 +0,0 @@
1
- ---
2
- language: ruby
3
- dist: bionic
4
- cache: bundler
5
- rvm:
6
- - 2.6.8
7
- - 2.7.4
8
- - 3.0.2
9
- before_script:
10
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
11
- - chmod +x ./cc-test-reporter
12
- - "./cc-test-reporter before-build"
13
- after_script:
14
- - "./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT"