coralogix_logger 0.0.7 → 0.0.8

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
  SHA1:
3
- metadata.gz: d582d5614b14fbb964f88944c436960ce35ebcd2
4
- data.tar.gz: 72644f9c85ec8be14f7f7a7cda905c7ab5635764
3
+ metadata.gz: 444f4d0977a5a0d4a0111d7e5f5a7a4ed3428d2d
4
+ data.tar.gz: b43e3f213458541180e6e14782ac5d93f3457bf9
5
5
  SHA512:
6
- metadata.gz: be293a220f99fad2f522db411f8698e10cab3e48d710ebbe7c4b458dbeccf6f55b8490020067cd97e0b54aa0a371a3f6232bca058a704cbe97f35e5c16a955c1
7
- data.tar.gz: 61a94a4d2b80727950aa227d745b673983fe5c75f6998f66bb4b22c4b7265483642ac895412eff0621f08af1c19e7a49452cb274d06c92b4a2a9539cafb31010
6
+ metadata.gz: e648ae6b4703093c37be7ef9db79018fbef19b97e93748e3b32cfedf95f0234e51cd6742e47f710ed57b9fbdc93c8f0e3b2017bb50e3f75ccf21e5e0910a19b4
7
+ data.tar.gz: abab7b3b0313cb6c206929437a99822919cd2fcec39f4d4f21d05b936394c9baaf7946ade6ff55f48a819bfbe293029fd7b8a61e6427830892a8f53cbaa1ac9f
data/README.md CHANGED
@@ -33,17 +33,18 @@ You must provide the following four variables when creating a Coralogix logger i
33
33
  APP_NAME = "MyTestApp"
34
34
  SUB_SYSTEM = "BL"
35
35
 
36
+ # Configure Coralogix SDK. You need to define it only once per process.
36
37
  Coralogix::CoralogixLogger.configure(PRIVATE_KEY, APP_NAME, SUB_SYSTEM)
37
38
 
38
- #The common practice is to get an instance of the logger in each class and setting the logger name to the class name.
39
- logger = Coralogix::CoralogixLogger.get_logger("category1")
39
+ # The common practice is to get an instance of the logger in each class and setting the logger name to the class name.
40
+ # logger name will be used as category unless specified otherwise.
41
+ logger = Coralogix::CoralogixLogger.get_logger("my class")
40
42
 
41
- #Send "Hello World!" message with severity verbose.
43
+ # Send "Hello World!" message with severity verbose.
42
44
  logger.log(Coralogix::Severity::VERBOSE, "Hello World!")
43
45
 
44
- #Additional options
45
- #Severity, category and message parameters are mandatory. The rest of the parameters are optional.
46
- #If category is not specified, logger name will be used instead
46
+ # Additional options
47
+ # Severity and message parameters are mandatory. The rest of the parameters are optional.
47
48
  logger.log(Coralogix::Severity::DEBUG, "Hello World!", category: "my category")
48
49
  logger.log(Coralogix::Severity::INFO, "Hello World!", category: "my category", className: "my class")
49
50
  logger.log(Coralogix::Severity::WARNING, "Hello World!", category: "my category", className: "my class", methodName: "my method")
data/lib/constants.rb CHANGED
@@ -27,19 +27,19 @@ module Coralogix
27
27
 
28
28
 
29
29
  #Coralogix logs url
30
- CORALOGIX_LOG_URL = "https://test.coralogix.com:443/api/v1/logs"
30
+ CORALOGIX_LOG_URL = "https://api.coralogix.com:443/api/v1/logs"
31
31
 
32
32
  #Coralogix time delat url
33
- CORALOGIX_TIME_DELTA_URL = "https://test.coralogix.com:443/sdk/v1/time"
33
+ CORALOGIX_TIME_DELTA_URL = "https://api.coralogix.com:443/sdk/v1/time"
34
34
 
35
35
  #Default private key
36
36
  FAILED_PRIVATE_KEY = "9626c7dd-8174-5015-a3fe-5572e042b6d9"
37
37
 
38
38
  #Default application name
39
- FAILED_APP_NAME = "FAILED_APP_NAME"
39
+ NO_APP_NAME = "NO_APP_NAME"
40
40
 
41
41
  #Default subsystem name
42
- FAILED_SUB_SYSTEM = "FAILED_SUB_NAME"
42
+ NO_SUB_SYSTEM = "NO_SUB_NAME"
43
43
 
44
44
  #Default log file name
45
45
  LOG_FILE_NAME = "coralogix.sdk.log"
@@ -53,4 +53,10 @@ module Coralogix
53
53
  #Interval between failed http post requests
54
54
  HTTP_SEND_RETRY_INTERVAL = 2
55
55
 
56
+ # Coralogix category
57
+ CORALOGIX_CATEGORY = 'CORALOGIX'
58
+
59
+ # Sync time update interval
60
+ SYNC_TIME_UPDATE_INTERVAL = 5 #minutes
61
+
56
62
  end
@@ -61,6 +61,9 @@ module Coralogix
61
61
  # @param sub_system - sub system name
62
62
  # @return [boolean] return a true or false.
63
63
  def self.configure private_key, app_name, sub_system
64
+ private_key = private_key.strip.empty? ? FAILED_PRIVATE_KEY : private_key
65
+ app_name = app_name.strip.empty? ? NO_APP_NAME : app_name
66
+ sub_system = sub_system.strip.empty? ? NO_SUB_SYSTEM : sub_system
64
67
  LoggerManager.configure(:privateKey => private_key, :applicationName => app_name, :subsystemName => sub_system) unless LoggerManager.configured
65
68
  end
66
69
 
@@ -72,7 +75,7 @@ module Coralogix
72
75
  # @param className - log class name
73
76
  # @param methodName - log method name
74
77
  # @param threadId - log thread id
75
- def log severity, message, category: @category, className: "", methodName: "", threadId: ""
78
+ def log severity, message, category: @category, className: "", methodName: "", threadId: Thread.current.object_id.to_s
76
79
  LoggerManager.add_logline message, severity, category, :className => className, :methodName => methodName, :threadId => threadId
77
80
  end
78
81
 
@@ -81,7 +84,7 @@ module Coralogix
81
84
  # For instance, for info severity it will create a method:
82
85
  # def info message, category: @category, className: "", methodName: "", threadId: ""
83
86
  SEVERITIES.keys.each do |severity|
84
- define_method("#{severity}") do |message, category: @category, className: "", methodName: "", threadId: ""|
87
+ define_method("#{severity}") do |message, category: @category, className: "", methodName: "", threadId: Thread.current.object_id.to_s|
85
88
  LoggerManager.add_logline message, SEVERITIES["#{__method__}".to_sym], category, :className => className, :methodName => methodName, :threadId => threadId
86
89
  end
87
90
  end
data/lib/httpsender.rb CHANGED
@@ -6,13 +6,13 @@ require 'openssl'
6
6
  require 'benchmark'
7
7
  require 'date'
8
8
  require 'time'
9
-
10
9
  module Coralogix
11
10
  # @private
12
11
  module CoralogixHTTPSender
13
12
  TICKS_IN_SECOND = 10**7
14
13
  @initialized = false
15
-
14
+ @mutex = Mutex.new
15
+
16
16
  def CoralogixHTTPSender.disable_proxy value
17
17
  @disable_proxy = value
18
18
  end
@@ -33,7 +33,9 @@ module Coralogix
33
33
  @http.keep_alive_timeout = 10
34
34
  @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
35
35
  @http.read_timeout = HTTP_TIMEOUT # seconds
36
+
36
37
  @req = Net::HTTP::Post.new(@uri.path, 'Content-Type' => 'application/json')
38
+ #@req_get = Net::HTTP::Get.new URI(CORALOGIX_TIME_DELTA_URL)
37
39
  @initialized = true
38
40
  rescue Exception => e
39
41
  DebugLogger.error e.message
@@ -73,29 +75,31 @@ module Coralogix
73
75
  #
74
76
  # @return [float] - time delta
75
77
  def CoralogixHTTPSender.get_time_sync
76
- self.initialize unless @initialized
77
- begin
78
- DebugLogger.info "Syncing time with coralogix server"
79
- res = @http.get(CORALOGIX_TIME_DELTA_URL)
80
-
81
- if res.is_a?(Net::HTTPSuccess) && !res.body.to_s.empty?
82
- #Get server ticks from 1970
83
- server_ticks = res.body.to_i.to_s # Relative to 1970
84
- #Take the first 13 digits
85
- server_ticks = server_ticks[0..12]
86
- #Convert the ticks to utc time
87
- server_time = Time.parse(Time.at(server_ticks.to_i / 1000.to_f).strftime('%H:%M:%S.%L')).utc
88
- local_time = Time.now.utc
78
+ @mutex.synchronize do
79
+ self.initialize unless @initialized
80
+ begin
81
+ DebugLogger.info "Syncing time with coralogix server"
82
+ res = @http.get(CORALOGIX_TIME_DELTA_URL)
89
83
 
90
- time_delta = (server_time - local_time) * 1000.0
91
- DebugLogger.info "Updating time delta to: #{time_delta}"
92
- return true, time_delta
84
+ if res.is_a?(Net::HTTPSuccess) && !res.body.to_s.empty?
85
+ #Get server ticks from 1970
86
+ server_ticks = res.body.to_i.to_s # Relative to 1970
87
+ #Take the first 13 digits
88
+ server_ticks = server_ticks[0..12]
89
+ #Convert the ticks to utc time
90
+ server_time = Time.parse(Time.at(server_ticks.to_i / 1000.to_f).strftime('%H:%M:%S.%L')).utc
91
+ local_time = Time.now.utc
92
+
93
+ time_delta = (server_time - local_time) * 1000.0
94
+ DebugLogger.info "Updating time delta to: #{time_delta}"
95
+ return true, time_delta
96
+ end
97
+ return false, 0
98
+ rescue Exception => e
99
+ DebugLogger.error e.message
100
+ DebugLogger.error e.backtrace.inspect
101
+ return false, 0
93
102
  end
94
- return false, 0
95
- rescue Exception => e
96
- DebugLogger.error e.message
97
- DebugLogger.error e.backtrace.inspect
98
- return false, 0
99
103
  end
100
104
  end
101
105
  end
data/lib/manager.rb CHANGED
@@ -15,7 +15,7 @@ module Coralogix
15
15
  def self.initialize
16
16
  @buffer = []
17
17
  @buffer_size = 0
18
- @bulk_template = {:privateKey => FAILED_PRIVATE_KEY, :applicationName => FAILED_APP_NAME, :subsystemName => FAILED_SUB_SYSTEM}
18
+ @bulk_template = {:privateKey => FAILED_PRIVATE_KEY, :applicationName => NO_APP_NAME, :subsystemName => NO_SUB_SYSTEM}
19
19
  @mutex = Mutex.new
20
20
  @time_delta_last_update = 0
21
21
  @time_delta = 0
@@ -32,12 +32,27 @@ module Coralogix
32
32
  def self.configure **args
33
33
  begin
34
34
  @bulk_template = args.merge({:computerName => `hostname`.strip})
35
- configured = true
36
- rescue
37
- return false
35
+ DebugLogger.info "Successfully configured Coralogix logger."
36
+ @configured = true
37
+ self.update_time_delta_interval
38
+ self.add_logline "The Application Name #{@bulk_template[:applicationName]} and Subsystem Name #{@bulk_template[:subsystemName]} from the Ruby SDK, version #{self.version?} has started to send data.", Severity::INFO, CORALOGIX_CATEGORY
39
+ rescue Exception => e
40
+ DebugLogger.error e.message
41
+ DebugLogger.error e.backtrace.inspect
42
+ @configured = false
38
43
  end
44
+ return @configured
39
45
  end
40
46
 
47
+ def self.version?
48
+ begin
49
+ Gem.loaded_specs['coralogix_logger'].version.to_s
50
+ rescue Exception => e
51
+ DebugLogger.error e.message
52
+ DebugLogger.error e.backtrace.inspect
53
+ return '0.0.0'
54
+ end
55
+ end
41
56
  # Add a log line to our buffer.
42
57
  #
43
58
  # @param message - The logs message. This is a must parameter.
@@ -55,10 +70,8 @@ module Coralogix
55
70
  #Combine a logentry from the must parameters together with the optional one.
56
71
  new_entry = {:text => message, :timestamp => Time.now.utc.to_f * 1000 + @time_delta, :severity => severity, :category => category}.merge(args)
57
72
  @buffer << new_entry
58
- #Updte the buffer size to reflect the new size.
73
+ #Update the buffer size to reflect the new size.
59
74
  @buffer_size+=new_entry.to_json.bytesize
60
- else
61
- DebugLogger.warn "Buffer is full. Ignoring current message."
62
75
  end
63
76
  end
64
77
  rescue Exception => e
@@ -77,12 +90,17 @@ module Coralogix
77
90
  @mutex.synchronize do
78
91
  # Total buffer size
79
92
  size = @buffer.size
93
+ return unless size > 0
80
94
 
81
95
  # If the size is bigger than the maximum allowed chunk size then split it by half.
82
96
  # Keep splitting it until the size is less than MAX_LOG_CHUNK_SIZE
83
- while @buffer.take(size).join(",").bytesize > MAX_LOG_CHUNK_SIZE
97
+ while (@buffer.take(size).join(",").bytesize > MAX_LOG_CHUNK_SIZE) || (size == 0)
84
98
  size=size/2;
85
99
  end
100
+
101
+ # We must take at leat one value. If the first message is bigger than MAX_LOG_CHUNK_SIZE
102
+ # we need to take it anyway.
103
+ size = size > 0 ? size : 1
86
104
 
87
105
  DebugLogger.info "Checking buffer size. Total log entries is: #{size}"
88
106
  @bulk_template[:logEntries] = @buffer.shift(size)
@@ -90,6 +108,9 @@ module Coralogix
90
108
  # Extract from the buffer size the total amount of the logs we removed from the buffer
91
109
  @buffer_size-= (@bulk_template[:logEntries].to_json.bytesize - 2 - size-1)
92
110
 
111
+ # Make sure we are always positive
112
+ @buffer_size = @buffer_size >= 0 ? @buffer_size : 0
113
+
93
114
  DebugLogger.info "Bufer size after removal is: #{@buffer.join(",").bytesize}"
94
115
  end
95
116
  CoralogixHTTPSender.send_request(@bulk_template) unless @bulk_template[:logEntries].empty?
@@ -103,7 +124,7 @@ module Coralogix
103
124
  def self.update_time_delta_interval
104
125
  begin
105
126
  #If more than 5 seconds passed from the last sync update
106
- if ((DateTime.now.strftime('%Q').to_i - @time_delta_last_update) / 1000) >= 300 #5 minuts
127
+ if ((DateTime.now.strftime('%Q').to_i - @time_delta_last_update) / 1000) >= (60 * SYNC_TIME_UPDATE_INTERVAL) #5 minuts
107
128
  res, _time_delta = CoralogixHTTPSender.get_time_sync
108
129
  if res
109
130
  @time_delta = _time_delta
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coralogix_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Royee Goldberg