cloudwatchlogger 0.2.1 → 0.3.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
- SHA1:
3
- metadata.gz: fb1e357bd158f76606d1e13a03ed520f6dead066
4
- data.tar.gz: 4dd0d17ac08f99ff207519b1b9e5ad7c0120cc8d
2
+ SHA256:
3
+ metadata.gz: 8c2af49513f0c3aa7ab58d1dd9118018ca1adec7fb1335493e0fad7a0a60b6e2
4
+ data.tar.gz: 3ef0b93addf793462ceec0052acb7c4e13e9fe5e0c59dc9034bb4f1acd1ea5af
5
5
  SHA512:
6
- metadata.gz: 9ae37a40c94f7f2b7b82702ff319d3511dc0baf64e70e095b2bfd2cfaf37bb06955dd083426cb068412f1dcdfc560b65ef586c4d50243ea902792162eb11ec59
7
- data.tar.gz: e0c060b9ec7d9001a450b0da9d611e7d1bd1c77cf70278e32f38c646c64effe4dd7bdb997dfec03dfbc1603d878f20b642b243fefe177d9e37e5a85081f1dc67
6
+ metadata.gz: f3d46c5fe91f1eeb9c2f751263f86bd71194c6d0d8154b15fbe777baa79491aabc297289d245a50eac89fef2bbe661c0d4328eebb0c08171602d31e9c617c06f
7
+ data.tar.gz: 5d71a3e18b6ee0557710e96b19b6b40e2fc7458cbef0f1906c01629bcd207b48e11e8d03e9d597a8c67160d63937111d2c82bfe7355135d54c4c9d1c3accffe0
data/README.md CHANGED
@@ -20,7 +20,7 @@ log = CloudWatchLogger.new({access_key_id: 'YOUR_ACCESS_KEY_ID', secret_access_k
20
20
  log.info("Hello World from Ruby")
21
21
  ```
22
22
 
23
- In case you need to pass different region or group's different Log Stream name:
23
+ The region will default to the value of the environment variable `AWS_REGION`. In case you need to pass different region or group's different Log Stream name:
24
24
 
25
25
  ```ruby
26
26
  log = CloudWatchLogger.new({
@@ -29,6 +29,12 @@ log = CloudWatchLogger.new({
29
29
  }, 'YOUR_CLOUDWATCH_LOG_GROUP', 'YOUR_CLOUDWATCH_LOG_STREAM', region: 'YOUR_CLOUDWATCH_REGION' )
30
30
  ```
31
31
 
32
+ Provding an empty hash instead of credentials will cause the AWS SDK to search the default credential provider chain for credentials, namely:
33
+
34
+ 1. Environment variables `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`
35
+ 1. Amazon ECS container credentials (task role)
36
+ 1. Instance profile credentials (IAM role)
37
+
32
38
  ### With Rails
33
39
 
34
40
  config/environments/production.rb
@@ -5,10 +5,10 @@ Gem::Specification.new do |s|
5
5
  s.name = 'cloudwatchlogger'
6
6
  s.version = CloudWatchLogger::VERSION
7
7
  s.date = Time.now
8
- s.summary = 'AWS CloudWatchLogs compatiable logger for ruby.'
8
+ s.summary = 'Amazon CloudWatch Logs compatiable logger for ruby.'
9
9
  s.description = 'Logger => CloudWatchLogs'
10
10
 
11
- s.license = "http://opensource.org/licenses/MIT"
11
+ s.license = "MIT"
12
12
 
13
13
  s.authors = ["Zane Shannon"]
14
14
  s.email = 'z@zcs.me'
@@ -11,7 +11,7 @@ module CloudWatchLogger
11
11
  logger = Logger.new(client)
12
12
 
13
13
  if client.respond_to?(:formatter)
14
- logger.formatter = client.formatter
14
+ logger.formatter = client.formatter(opts[:format])
15
15
  elsif client.respond_to?(:datetime_format)
16
16
  logger.datetime_format = client.datetime_format
17
17
  end
@@ -33,11 +33,11 @@ module CloudWatchLogger
33
33
  end.join(', ')
34
34
  end
35
35
 
36
- def formatter
36
+ def formatter(format=nil)
37
37
  proc do |severity, datetime, progname, msg|
38
38
  processid = Process.pid
39
- if @format == :json && msg.is_a?(Hash)
40
- MultiJson.dump(msg.merge(severity: severity,
39
+ if format == :json && msg.is_a?(Hash)
40
+ message = MultiJson.dump(msg.merge(severity: severity,
41
41
  datetime: datetime,
42
42
  progname: progname,
43
43
  pid: processid))
@@ -45,6 +45,11 @@ module CloudWatchLogger
45
45
  message = "#{datetime} "
46
46
  message << massage_message(msg, severity, processid)
47
47
  end
48
+
49
+ {
50
+ message: message,
51
+ epoch_time: epoch_from(datetime)
52
+ }
48
53
  end
49
54
  end
50
55
 
@@ -80,6 +85,10 @@ module CloudWatchLogger
80
85
  uuid = UUID.new
81
86
  @log_stream_name ||= "#{Socket.gethostname}-#{uuid.generate}"
82
87
  end
88
+
89
+ def epoch_from(datetime)
90
+ (datetime.utc.to_f.round(3) * 1000).to_i
91
+ end
83
92
  end
84
93
  end
85
94
  end
@@ -50,16 +50,16 @@ module CloudWatchLogger
50
50
  loop do
51
51
  connect!(opts) if @client.nil?
52
52
 
53
- msg = @queue.pop
54
- break if msg == :__delivery_thread_exit_signal__
53
+ message_object = @queue.pop
54
+ break if message_object == :__delivery_thread_exit_signal__
55
55
 
56
56
  begin
57
57
  event = {
58
58
  log_group_name: @log_group_name,
59
59
  log_stream_name: @log_stream_name,
60
60
  log_events: [{
61
- timestamp: (Time.now.utc.to_f.round(3) * 1000).to_i,
62
- message: msg
61
+ timestamp: message_object[:epoch_time],
62
+ message: message_object[:message]
63
63
  }]
64
64
  }
65
65
  event[:sequence_token] = @sequence_token if @sequence_token
@@ -93,13 +93,11 @@ module CloudWatchLogger
93
93
  end
94
94
 
95
95
  def connect!(opts = {})
96
- @client = Aws::CloudWatchLogs::Client.new(
97
- region: @opts[:region] || 'us-east-1',
98
- access_key_id: @credentials[:access_key_id],
99
- secret_access_key: @credentials[:secret_access_key],
100
- http_open_timeout: opts[:open_timeout],
101
- http_read_timeout: opts[:read_timeout]
102
- )
96
+ args = { http_open_timeout: opts[:open_timeout], http_read_timeout: opts[:read_timeout] }
97
+ args[:region] = @opts[:region] if @opts[:region]
98
+ args.merge( @credentials.key?(:access_key_id) ? { access_key_id: @credentials[:access_key_id], secret_access_key: @credentials[:secret_access_key] } : {} )
99
+
100
+ @client = Aws::CloudWatchLogs::Client.new(args)
103
101
  begin
104
102
  @client.create_log_stream(
105
103
  log_group_name: @log_group_name,
@@ -110,7 +108,8 @@ module CloudWatchLogger
110
108
  log_group_name: @log_group_name
111
109
  )
112
110
  retry
113
- rescue Aws::CloudWatchLogs::Errors::ResourceAlreadyExistsException
111
+ rescue Aws::CloudWatchLogs::Errors::ResourceAlreadyExistsException,
112
+ Aws::CloudWatchLogs::Errors::AccessDeniedException
114
113
  end
115
114
  end
116
115
  end
@@ -1,3 +1,3 @@
1
1
  module CloudWatchLogger
2
- VERSION = '0.2.1'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudwatchlogger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zane Shannon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-19 00:00:00.000000000 Z
11
+ date: 2020-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: uuid
@@ -69,7 +69,7 @@ files:
69
69
  - lib/cloudwatchlogger/version.rb
70
70
  homepage: http://github.com/zshannon/cloudwatchlogger
71
71
  licenses:
72
- - http://opensource.org/licenses/MIT
72
+ - MIT
73
73
  metadata: {}
74
74
  post_install_message:
75
75
  rdoc_options: []
@@ -86,9 +86,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  - !ruby/object:Gem::Version
87
87
  version: 1.3.6
88
88
  requirements: []
89
- rubyforge_project:
90
- rubygems_version: 2.6.11
89
+ rubygems_version: 3.0.3
91
90
  signing_key:
92
91
  specification_version: 4
93
- summary: AWS CloudWatchLogs compatiable logger for ruby.
92
+ summary: Amazon CloudWatch Logs compatiable logger for ruby.
94
93
  test_files: []