uc3-dmp-cloudwatch 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f71f6ea7b2f3dc39de9eab5bf201e93899cb1537ca935a144d5e4eb5e9e42d9c
4
+ data.tar.gz: 9dcc25d1cb233a77508d35541bf217ebf43834bbbdf01039c71e196333c97ca3
5
+ SHA512:
6
+ metadata.gz: 272f2017c217f5f79fb92e5b22e589f16df76d7a77af39bb964a5ad833dea458187d67809ed9e19917b5ddbab9271efc0d2ddce3137be85776fb044dca9a09c7
7
+ data.tar.gz: 3ffe51067739dc79e82222f1631f0717d77c9a752507f0191118987bd3f55ca55dfea7b77af01a29c249355a89d604852dbad5a7db26feba3814a2f3f6fc47f3
data/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # uc3-dmp-logger
2
+
3
+ Logger service to write CloudWatch logs in a specific format
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Uc3DmpCloudwatch
4
+ class LoggerError < StandardError; end
5
+
6
+ # Helper functions for working with Dynamo JSON
7
+ class Logger
8
+ attr_accessor :source, :event, :request_id, :level
9
+
10
+ LOG_LEVELS = %w[none error info debug]
11
+
12
+ def initialize(**args)
13
+ @level = args.fetch(:level, 'info')&.to_s&.downcase
14
+ @level = 'info' unless LOG_LEVELS.include?(@level)
15
+
16
+ @source = args[:source]
17
+ @event = args[:event]
18
+ @request_id = args[:request_id]
19
+ end
20
+
21
+ def error(message:, details: {})
22
+ return false if @level == 'none' || message.nil?
23
+
24
+ _format_msg(mode: 'error', msg: message)
25
+ _format_msg(mode: 'error', msg: details) unless details.nil? || (details.is_a?(Hash) && details.keys.empty?)
26
+ _log_event(mode: 'error')
27
+ end
28
+
29
+ def info(message:, details: {})
30
+ return false if %w[none error].include?(@level) || message.nil?
31
+
32
+ _format_msg(mode: 'info', msg: message)
33
+ _format_msg(mode: 'info', msg: details) unless details.nil? || (details.is_a?(Hash) && details.keys.empty?)
34
+ end
35
+
36
+ def debug(message:, details: {})
37
+ return false if %w[none error info].include?(@level) || message.nil?
38
+
39
+ _format_msg(mode: 'debug', msg: message)
40
+ _format_msg(mode: 'debug', msg: details) unless details.nil? || (details.is_a?(Hash) && details.keys.empty?)
41
+ end
42
+
43
+ private
44
+
45
+ # Format the start of the message with a prefix and the AWS request id if available
46
+ def _prefix(prefix: 'INFO')
47
+ prefix = @request_id.nil? ? "#{prefix} " : "#{prefix} RequestId: #{@request_id},"
48
+ prefix += " SOURCE: #{@source}," unless @source.nil?
49
+ end
50
+
51
+ # Format the message
52
+ def _format_msg(mode: 'info', msg:)
53
+ message = msg.is_a?(Array) ? msg.join(', ') : msg
54
+ puts "#{_prefix(prefix: mode.upcase)} #{message.is_a?(String) ? "MESSAGE: #{message}" : "PAYLOAD: #{message}"}"
55
+ end
56
+
57
+ # Write the event Hash
58
+ def _log_event(mode: 'info')
59
+ puts "#{_prefix(prefix: mode)} Event: #{@event}"
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Uc3DmpCloudwatch
4
+ VERSION = '0.0.1'
5
+ end
@@ -0,0 +1,9 @@
1
+ # rubocop:disable Naming/FileName
2
+ # frozen_string_literal: true
3
+
4
+ require 'uc3-dmp-cloudwatch/logger'
5
+
6
+ module Uc3DmpCloudwatch
7
+
8
+ end
9
+ # rubocop:enable Naming/FileName
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: uc3-dmp-cloudwatch
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Brian Riley
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-07-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: byebug
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 11.1.3
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 11.1.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 3.9.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 3.9.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 1.50.2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 1.50.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop-rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 2.20.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 2.20.0
69
+ description: Helper for working with Lambda logs
70
+ email:
71
+ - brian.riley@ucop.edu
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - README.md
77
+ - lib/uc3-dmp-cloudwatch.rb
78
+ - lib/uc3-dmp-cloudwatch/logger.rb
79
+ - lib/uc3-dmp-cloudwatch/version.rb
80
+ homepage: https://github.com/CDLUC3/dmp-hub-cfn/blob/main/src/sam/gems/uc3-dmp-cloudwatch
81
+ licenses:
82
+ - MIT
83
+ metadata:
84
+ rubygems_mfa_required: 'false'
85
+ post_install_message:
86
+ rdoc_options: []
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '2.7'
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ requirements: []
100
+ rubygems_version: 3.1.6
101
+ signing_key:
102
+ specification_version: 4
103
+ summary: DMPTool gem that provides support for writing standardized logs to CloudWatch
104
+ test_files: []