cloudwatchlogger 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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: []